MySql 准备语句不适用于 SELECT,但适用于所有其他语句

MySql prepared statement is not working for SELECT,but works for all other statement

我在 SO

发现了同样的问题

Prepared statement works for INSERT but not for SELECT

并试图遵循它,但没有 luck.One 更多的东西,那个问题是关于 OOP 结构的,但我的是 procedural style

这是我的代码

$stmt = mysqli_stmt_init($connect_dude);

if(mysqli_stmt_prepare($stmt,"SELECT headx FROM main_page WHERE user_id=?")){

  mysqli_stmt_bind_param($stmt, "i", $idx);
  mysqli_stmt_execute($stmt);
  mysqli_stmt_bind_result($stmt, $head);
  printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

  ...................
  ...................
}

它显示 Number of rows:0 它应该是 1。这就是为什么,我无法从 database 继续到 fetch data。我尽力解决了这个问题,但是没能做到。

非常感谢您的帮助。

感谢您的宝贵时间。

我想通了。

需要使用mysqli_stmt_store_result($stmt)

mysqli_stmt_bind_param($stmt, "i", $idx);
mysqli_stmt_execute($stmt);
mysqli_stmt_store_result($stmt);
printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));

给我 Number of rows:1

截至 php.net

You must call mysqli_stmt_store_result() for every query that successfully produces a result set (SELECT, SHOW, DESCRIBE, EXPLAIN)

但是

对于 UPDATEDELETEINSERT.

不是必须的

谢谢大家