我怎样才能将mysqli_stmt_bind_param用于整数?

时间:2013-12-13 16:43:00

标签: php mysql mysqli

正如我现在所知,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表示查询绑定成功但没有找到行。

如果这看起来微不足道,我很抱歉,但这对我来说没有多大意义。

2 个答案:

答案 0 :(得分:0)

我想你还需要mysqli_stmt_bind_resultmysqli_stmt_store_resultmysqli_stmt_fetch才能得到一些结果......至少这是手册所说的。

答案 1 :(得分:0)

除非您使用mysqli_stmt_store_result,否则mysqli_stmt_num_rows将返回0,因为mysqli尚未提取数据且不知道有多少行。

mysqli_stmt_store_result将来自MySQL的所有结果数据缓存在内存中供PHP随后使用,但它可能导致大数据集内存不足或内存限制不足。