PHP mysqli准备语句不起作用

Jon*_*son 6 php sql mysqli prepared-statement

我正在使用mysqli prepare语句来查询具有多个约束的数据库.我在我的测试文件中运行了代码,它运行得很好.但是,当我将代码移动到我的实时文件时,它会抛出以下错误:

PHP警告:mysqli_stmt :: bind_result():绑定变量数与第80行C:\ wamp\www\firecom\firecom.php中预准备语句中的字段数不匹配

PHP注意:未定义的变量:在第89行产生C:\ wamp\www\firecom\firecom.php

两个参数都正确设置,但有些东西正在抛弃它.

码:

$query = $mysqli->prepare("SELECT * FROM calls WHERE wcccanumber = ? && county = ?");
$query->bind_param("ss", $wcccanumber, $county);
$query->execute();

$meta = $query->result_metadata();

while ($field = $meta->fetch_field()) {
    $parameters[] = &$row[$field->name];
}

call_user_func_array(array($query, 'bind_result'), $parameters);

while ($query->fetch()) {
    foreach($row as $key => $val) {
        $x[$key] = $val;
    }
    $results[] = $x;
}

print_r($results['0']);
Run Code Online (Sandbox Code Playgroud)

$ query var_dump:

object(mysqli_stmt)#27 (10) { ["affected_rows"]=> int(-1) ["insert_id"]=> int(0) ["num_rows"]=> int(0) ["param_count"]=> int(2) ["field_count"]=> int(13) ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["sqlstate"]=> string(5) "00000" ["id"]=> int(1) }
Run Code Online (Sandbox Code Playgroud)

You*_*nse 5

为什么用mysqli折磨自己?
PDO 中,您不需要这些可怕的代码,只需要一行即可获得结果

$query = $pdo->prepare("SELECT * FROM calls WHERE wcccanumber = ? && county = ?");
$query->execute(array($wcccanumber, $county));
$results = $query->fetchAll();
print_r($results[0]);
Run Code Online (Sandbox Code Playgroud)