Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP mysqli prepare语句不工作_Php_Sql_Mysqli_Prepared Statement - Fatal编程技术网

PHP mysqli prepare语句不工作

PHP mysqli prepare语句不工作,php,sql,mysqli,prepared-statement,Php,Sql,Mysqli,Prepared Statement,我正在使用mysqli prepare语句查询具有多个约束的数据库。我已经在我的一个测试文件中运行了代码,它运行得非常好。但是,当我将代码移到live文件时,它会抛出以下错误: PHP警告:mysqli_stmt::bind_结果:绑定变量数 与中的准备语句中的字段数不匹配 C:\wamp\www\firecom\firecom.php,第80行 PHP注意:未定义变量:结果为 C:\wamp\www\firecom\firecom.php,第89行 这两个参数都设置正确,但有什么问题 代码:

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

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

PHP注意:未定义变量:结果为 C:\wamp\www\firecom\firecom.php,第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']);
$query var_转储:

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折磨自己? 在这种情况下,您不需要这些可怕的代码,只需要一行代码就可以得到结果

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

您可以在sql查询中使用&&吗?我以为它是在WHERE子句中。请尝试从wcccanumber=?而country=?@JeffHawthorne实际上是和的同义词:$results警告很简单-服务器正在检查未定义的变量,而您的本地变量则不是。在while$query->fetch循环之前定义$results,它就会消失。您是否尝试将要传递给bind_param函数的变量变为var_dump?可能其中一个是空的,不能像传递的值一样识别,只是一个猜测,但谁知道呢……是的,你可以。