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():変数の数がプリペアドステートメントのパラメーターの数と一致しません

一方、クエリには2つの疑問符があり、bind_Paramには2つの変数があります。

これを解決する方法は?

編集:\'?\'を?に置き換えます につながる

致命的なエラー:非オブジェクトのメンバー関数bind_param()を呼び出す

4

1 に答える 1

7

?次のように引用しないでください。

$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 に答える