2

所以根据一个建议,我试图包括准备好的陈述。

但是 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()

4

1 回答 1

7

不要引用你?的 s 如下:

$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";
    }
}
于 2013-01-14T17:30:09.690 回答