【问题标题】:mysqli num_rows returning 0mysqli num_rows 返回 0
【发布时间】:2013-11-16 04:19:02
【问题描述】:

无法弄清楚为什么这不起作用。在这里解决了其他问题,但似乎我的代码很好。

$queryLink = $mysqli->prepare("SELECT vendor_name FROM vendors WHERE vendor_id='1'");
$queryLink->execute();
$queryLink->store_result;
$queryLink->bind_result($vendor_name);
$queryLink->fetch();
$numRows = $queryLink->num_rows;
$queryLink->close();

echo $vendor_name.'<br>'.$numRows;

脚本返回这个:

VendorNameHere
0

它返回 1 条记录,但 $numRows 始终保持 0。我尝试将 numRows 行移动到脚本中的不同位置,但它始终返回 0。我做错了什么?

【问题讨论】:

  • 您确定要查询吗? vendor_name FROM vendors WHERE vendor_id='1' 而不是 vendor_name FROM vendors WHERE vendor_name='1' ?取决于您的专栏名称。
  • 列名是正确的......它甚至返回它绑定的一条记录。但是,num_rows 保持在 0。
  • 试试这个$numRows = $queryLink-&gt;num_rows();
  • 还有$queryLink-&gt;store_result();,你在这两行中都漏掉了()
  • @Fred-ii- $stmt::num_rows 是属性,而不是方法。

标签: php mysqli


【解决方案1】:

这一行:

$queryLink->store_result;

应该是方法调用:

$queryLink->store_result();

【讨论】:

  • 做到了。愚蠢的错字,一如既往。谢谢。
  • 我说的其中一个 ;-)
  • +1 为你迈克,感谢您添加的信息 ;-)
【解决方案2】:

但您不需要这里的行数。显然只有一个供应商具有这样的 ID。为什么要用无用的函数调用来膨胀你的代码?

$id   = 1;
$stmt = $mysqli->prepare("SELECT vendor_name FROM vendors WHERE vendor_id=?");
$stmt->bind_param("s", $id);
$stmt->execute();
$stmt->bind_result($vendor_name);
$stmt->fetch();

if ($vendor_name) {
    echo $vendor_name;
} else {
    echo "None found";
}

就是你需要的所有代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-26
    • 2018-01-12
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    相关资源
    最近更新 更多