php - 这个 php/mysql 在本地主机和远程服务器上的行为不同有什么原因吗?

标签 php mysql

我的代码在本地主机上运行良好,但是当加载到删除服务器上时,它的行为有所不同 - 本地主机上的 id 显示应有的样子(见图片) - id 是有序的。

enter image description here

然而,在远程服务器上它不是,但代码是相同的!!

enter image description here

我试过在远程服务器上的 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 子句,否则服务器可以决定按照它喜欢的顺序给你记录,甚至每次都不同查询...

关于php - 这个 php/mysql 在本地主机和远程服务器上的行为不同有什么原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56380455/

相关文章:

php - 如何创建唯一的注册号

mysql - 如何比较同一个表中的两行,但列小于和大于数字

taxonomy - SQL 重载 - 奇怪的查询

php - SQL 查询 'past games'

php - 有没有办法在 DB::raw 中插入值?拉维尔

php - mysql sum 函数没有给出结果

php - Symfony2 Doctrine 自定义查询问题

php - SQL 查询显示网关超时

javascript - 如何使用 javascript 发布包含文件类型参数的表单

php - zend框架休息 Controller 问题