php - 这个 php / mysql 在 localhost 和远程服务器上的行为有什么不同吗?
问题描述
我的代码在 localhost 上运行良好,但是当加载到删除服务器上时,它的行为有所不同 - localhost 上的 id 显示为应有的(见图) - id 是有序的。
然而,在远程服务器上它不是,但代码是相同的!!
我试过在远程服务器上的 myphpadmin 中只运行 sql 查询,这很好。
$con = mysqli_connect("localhost", "******", "******", "ps10");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: ".mysqli_connect_error();
}
if ($_POST['selClass'] == 'All records' OR $_SESSION['selClass'] == 'All records') {
$query_rs4 = "SELECT *
FROM marker
INNER JOIN users ON marker.class = users.class";
} else {
if (empty($_POST['selClass']) && empty($_SESSION['selClass'])) {
$query_rs4 = "SELECT *
FROM marker
INNER JOIN users ON marker.class = users.class";
} else {
$query_rs4 = "SELECT *
FROM marker
INNER JOIN users ON marker.class = users.class
WHERE users.username='{$_SESSION['selClass']}'";
}
}
$rs4 = mysqli_query($con, $query_rs4) or die(mysqli_error($con));
$row = mysqli_num_rows($rs4);
echo "There are ".$row." students in this class";
解决方案
除了您没有向我们展示创建表的代码这一事实之外,该代码在两台机器中的功能不同,请记住这句话
SELECT * FROM tableA JOIN tableb
意味着由于两个表中可能存在同名的字段,因此您无法确定返回的是哪个字段。
例如,如果两个表都有一个 id 字段,使用该查询意味着你不知道你会得到 tableA.id 还是 tableB.id...
相反,如果你说:
select tableA.* from tableA join tableB
您将确定 id 字段将来自 tableA...
此外,如果您想要按 id 排序的结果,您应该明确添加 ORDER BY tableA.id 子句,否则服务器可以决定按照它喜欢的顺序为您提供记录,甚至每次您执行查询时都会给您不同的记录。 ..
推荐阅读
- recursion - 如何找到以下函数的时间复杂度?
- ionic-framework - Ionic App,静默身份验证或刷新令牌以允许用户保持登录状态
- r - R 上的正则表达式模式:n-dash、m-dash、括号
- php - 如何计算嵌套在第二级 groupBy 中的项目?
- c++ - 在 C++ 中使用比较器的不同方法
- javascript - React Native:我对这个 React 有疑问
- google-apps-script - 谷歌工作表,获取单元格“A1”没有特定字符串的所有工作表名称
- android - 如何使用phoneNumber或电子邮件ID作为android中的参数从通讯录中获取联系人姓名
- python - 在 Numpy 数组中搜索子字符串值
- node.js - 无需全域授权即可访问 Google Workspace Admin SDK?