我在SO
上发现了同样的问题
Prepared语句适用于INSERT,但不适用于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
的位置。这就是为什么,我不能从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)
但是
对于UPDATE
、DELETE
和INSERT
,不必。
谢谢大家。