正如我现在所知,mysqli_real_escape_string
并不像准备好的陈述那样安全,所以我正在进行转换
但是,我遇到了最简单的代码问题
我期望执行的查询是SELECT * from forums WHERE id=1
,并且可以找到针对数据库行的测试。
这是我正在使用的预准备语句代码。
$con=mysqli_connect('a','b','c','d');
$forum = $_GET["forum"];
$stmt = mysqli_prepare($con, "SELECT * from forums WHERE id=?");
echo mysqli_stmt_bind_param($stmt, "i", $forum);
mysqli_stmt_execute($stmt);
mysqli_stmt_fetch($stmt);
mysqli_stmt_store_result($stmt);
if (mysqli_stmt_num_rows($stmt)<1){
echo "0";
}
这似乎返回10表示查询绑定成功但没有找到行。
如果这看起来微不足道,我很抱歉,但这对我来说没有多大意义。
答案 0 :(得分:0)
我想你还需要mysqli_stmt_bind_result
,mysqli_stmt_store_result
和mysqli_stmt_fetch
才能得到一些结果......至少这是手册所说的。
答案 1 :(得分:0)
除非您使用mysqli_stmt_store_result
,否则mysqli_stmt_num_rows
将返回0,因为mysqli尚未提取数据且不知道有多少行。
mysqli_stmt_store_result
将来自MySQL的所有结果数据缓存在内存中供PHP随后使用,但它可能导致大数据集内存不足或内存限制不足。