我在下面定义了功能。对于一个mySQL查询,此函数应该使用不同数量的值。
function queryMysql($query, $type, $arr)
{
global $connection; // this is mysql connection
$count = count($arr);
$val = array();
for ($i = 0; $i < $count; ++$i) {
$val[] = $arr[$i];
}
$stmt = $connection->prepare($query);
switch ($count) {
case 1:
$stmt->bind_param($type, $val[0]);
break;
case 2:
$stmt->bind_param($type, $val[0], $val[1]);
break;
case 3:
$stmt->bind_param($type, $val[0], $val[1], $val[2]);
break;
}
$stmt->execute();
printf("%d Row affected.\n", $stmt->num_rows);
// rest of function
}
我打电话给它如下:
$result = queryMysql("SELECT id FROM my_table WHERE my_value=?", 's', array('user'));
这一直在向我展示:
0 Row affected.
我做错了什么?我在php.net上阅读文档和stackoverflow上的相关问题,但我找不到问题。此外,我确信数据库包含一些与此查询匹配的行。
答案 0 :(得分:1)
您可能需要在获取行数之前存储结果。
$stmt->execute();
$stmt->store_result();
printf("%d Row affected.\n", $stmt->num_rows);
<强> mysqli_stmt::$num_rows 强>