使用占位符的MySQL查询不起作用

时间:2017-09-27 16:43:59

标签: php mysql database

我在下面定义了功能。对于一个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上的相关问题,但我找不到问题。此外,我确信数据库包含一些与此查询匹配的行。

1 个答案:

答案 0 :(得分:1)

您可能需要在获取行数之前存储结果。

$stmt->execute();
$stmt->store_result();
printf("%d Row affected.\n", $stmt->num_rows);

<强> mysqli_stmt::$num_rows