【发布时间】:2023-03-19 05:24:01
【问题描述】:
所以根据一个建议,我正在尝试包含准备好的语句。
但是 PHP 不接受我的代码。
$stmt = $link->prepare('SELECT COUNT(*) FROM `table` WHERE `company` = CONVERT( _utf8 \'?\' USING latin1 ) COLLATE latin1_german1_ci AND `password` = CONVERT( _utf8 \'?\' USING latin1 ) COLLATE latin1_german1_ci');
$stmt->bind_Param('ss', $firmaP, $kennwP);
$firmaP = utf8_encode($_POST['company']);
$kennwP = utf8_encode($_POST['password']);
if ($stmt->execute()) {
if($row = $stmt->fetch()) {
echo "OK";
}
else
{
echo "NO";
}
}
我明白了
警告:mysqli_stmt::bind_param(): 变量数不匹配 准备好的语句中的参数个数
而我在查询中有两个问号,在 bind_Param 中有两个变量。
如何解决?
编辑:用 ? 替换 \'?\'导致
致命错误:在非对象上调用成员函数 bind_param()
【问题讨论】:
-
使用绑定参数时不要在查询中引用字符串参数;你离开绑定语句为你做这件事
-
你没有引用参数。 db 引擎会这样做。
-
$firmaP和$kennwP绑定到语句时是否有值? -
我都试过了,结果一样。
-
convert 有可能根本不支持准备好的语句。也有一种严格的可能性,这里也不需要转换