PHP mysqli 准备语句不工作

标签 php sql mysqli prepared-statement

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

PHP Warning: mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement in C:\wamp\www\firecom\firecom.php on line 80

PHP Notice: Undefined variable: results in C:\wamp\www\firecom\firecom.php on line 89

两个参数都已正确设置,但有些东西将其丢弃。

代码:

$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']);

$查询变量转储:

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) }

最佳答案

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

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

关于PHP mysqli 准备语句不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15769966/

相关文章:

php - 追加记录并使其成为 "selected"

java.sql.SQLException : Access denied for user 'root' @'localhost' (using password: YES) 异常

php - Mysqli 最后插入 id 不起作用

php - 不在选定的特定单选按钮上显示其他结果

php - 选择某个月份位于两个日期字段之间的 MySQL 行

php - mysqli fetch_object() 抛出错误

php - 在 PHP 中将彩色 PDF 转换为黑白(单色)PDF [适用于 Twilio Fax]

sql - 每次更改时如何选择列?

mysql - 数据库建模 : does this non-identifiable relationship maintain identifiability?

php - 使用 PHP 替代标准 MySQL