【问题标题】:MySQL query finds rows but returns nothingMySQL 查询找到行但不返回任何内容
【发布时间】:2021-01-11 00:18:19
【问题描述】:

我有一个像这样创建的 2 列表(每个用户都有自己的表):

$sql = "CREATE TABLE $user_name (
          driver TINYTEXT NOT NULL, 
          reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
        )";

我已经(手动,使用 phpMyAdmin)将数据插入到一个这样的表中。 reg_date 设置在当前时间,并插入了一些随机字符串(数字,比如 01234)。

我尝试访问这样的行:

$mysql_qry2 = "SELECT * FROM $username";
$result2 = mysqli_query($conn, $mysql_qry2);
$ans = "";

if(mysqli_num_rows($result2) > 0) {
    while ($row = mysqli_fetch_assoc($result2)) {
        $ans = $ans . $row["driver"];
        $ans = $ans . " ";
        $x = $row["driver"];
        echo "$x";
        echo "a";
    }
    $ans = $ans . "asd";
    echo "$ans";
} else {
    echo "b";
}

编辑:修复我错误的变量名称后,“SELECT *”查询返回零行,尽管有 3 行数据。

【问题讨论】:

  • 您使用了错误的变量名。将 if(mysqli_num_rows($result) > 0) 更改为 if(mysqli_num_rows($result2) > 0)
  • 谢谢!我修复了这个问题和回显问题,但问题是它在 num_rows 中显示 0 行,尽管有 3 行(我用 phpMyAdmin 检查它)
  • 您的代码看起来可以正常工作。 phpize.online/… 请检查您在哪里设置$username
  • 注意:object-oriented interface to mysqli 明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆,因为缺少单个i 会导致麻烦。示例:$db = new mysqli(…)$db->prepare("…") 过程接口是 PHP 4 时代的产物,不应在新代码中使用。此外,程序界面的错误检查和报告不那么严格,使调试工作受挫。
  • 为每个用户创建一个表会给你带来一大堆问题。考虑创建一个包含user_id 列的表来区分数据。如有必要,这可以通过表分区进行优化。

标签: php mysql sql mysqli


【解决方案1】:

您检查了错误变量 mysqli_num_rows($result) > 0 的计数。

    $mysql_qry2 = "SELECT * FROM $username";
    $result2 = mysqli_query($conn, $mysql_qry2);
    $ans = "";

   if ($result2->num_rows > 0) {
      // output data of each row
      while($row = $result2->fetch_assoc()) {
            $ans = $ans . $row["driver"];
            echo "$ans";
            echo "a";
      }
    } else {
      echo "b";
    }  

【讨论】:

  • 谢谢!我在重命名变量时确实忘记添加“2”,但主要问题仍然存在,尽管表中有 3 行,但我的 select * 查询返回 0 结果:(
猜你喜欢
  • 2013-09-10
  • 1970-01-01
  • 2017-01-23
  • 1970-01-01
  • 2012-04-14
  • 2019-12-15
  • 2020-04-19
相关资源
最近更新 更多