gpt4 book ai didi

php - 使用准备好的语句获取 "wrong parameter count..."错误

转载 作者:行者123 更新时间:2023-11-29 05:30:09 25 4
gpt4 key购买 nike

我一直在尝试学习准备好的语句,以便我们可以开始在我们的 PHP 站点中实现它们。此函数使用 $_POST 传输方法从搜索表单上的文本框中获取值(或无),然后使用这些文本框的名称和值将条件添加到 WHERE 子句。该功能以前有效但我似乎无法让准备好的语句发挥作用。

研究了几个脚本后,我开始使用下面的脚本并解决了一些错误。现在,当我运行它时,出现错误 Wrong parameter count for mysqli_stmt::bind_param()

此查询运行后,我想将值导出到一个表中,并且在尝试准备语句之前工作。

这是我目前的代码:

  <?php

$db = mysqli_connec("ip_address", "loginname", "password", "database");

$refs = array('sssss');

foreach ($_POST as $key => $value)
{
$refs[] =& $_POST[$key];
}

$query = "SELECT col1, col2, col3, col4, col5 FROM tbl_name WHERE 1=1";
foreach ($_POST as $k => $v)
{
if(!empty($v)) {
$query .= " AND $k = ?";
$params[$k] = $v;
}
}

$results = $db->prepare($query);

call_user_func_array(array($results, 'bind_param'), $refs);

$results->execute();

?>

最佳答案

传递给 mysqli_stmt::bind_param 的参数必须通过引用传递,并且只有变量可以通过引用传递,所以在这种情况下不能将函数的结果直接传递给call_user_func_array。此外,传递给 bind_param 的第一个参数是变量类型的字符串列表。相反,试试这个:

// Change to whatever types are relevant
$refs = array('sss');

foreach ($arr as $key => $value)
{
$refs[] =& $arr[$key];
}

call_user_func_array(array($results, 'bind_param'), $refs);

编辑

这一行是错误的:

$results = $mysqli->prepare($query);

应该是

$results = $db->prepare($query);

关于php - 使用准备好的语句获取 "wrong parameter count..."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15707106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com