我在SO
Prepared statement works for INSERT but not for SELECT
并尝试遵循它,但没有运气。还有一件事,那个问题在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
。这就是原因,我无法从fetch data
继续database
。我尽力解决问题但是无法做到。
非常感谢你的帮助。
感谢您的时间。
答案 0 :(得分:1)
我已经弄清楚了。
需要使用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)
<强> BUT 强>
不必UPDATE
,DELETE
和INSERT
。
谢谢大家。