因此,根据建议,我正在尝试包含准备好的语句。
但是 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";
}
}
我明白了
Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
而我在查询中有两个问号,在 bind_Param 中有两个变量。
如何解决?
编辑:将\'?\' 替换为 ?导致
Fatal error: Call to a member function bind_param() on a non-object
最佳答案
不要引用你的 ?
如下:
$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');
$firmaP = utf8_encode($_POST['company']);
$kennwP = utf8_encode($_POST['password']);
$stmt->bind_Param('ss', $firmaP, $kennwP);
if ($stmt->execute()) {
if($row = $stmt->fetch()) {
echo "OK";
}
else
{
echo "NO";
}
}
关于php - 变量数量与参数数量不匹配——是的,它们匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14323476/