5

これは私が自分のパラメータをバインドする方法です:

$Con = mysqli_connect(...);
$Statement = mysqli_stmt_init($Con);

mysqli_stmt_prepare($Statement,"select * from users where name=? and email=?");
mysqli_stmt_bind_param("s",$Username);
mysqli_stmt_bind_param("s",$Email); <-- it fails here

しかし、mysqli_stmt_bind_param への 2 つの呼び出しを次のように置き換えると、他のケースでは問題なく動作します。

mysql_stmt_bind_param("ss",$Username,$Email)

問題は、パラメーターの配列があることです。パラメータの数がわからないので、それらを1つずつバインドする必要があります

4

3 に答える 3

5

mysqli_stmt_bind_param を使用する正しい方法は正確に次のとおりであるため、このアプローチは機能しません。

mysql_stmt_bind_param("ss",$Username,$Email)

参照: http://php.net/manual/en/mysqli-stmt.bind-param.php

パラメータの数を知るには、count() 配列を作成します。

于 2011-11-02T12:33:59.897 に答える
4

MySQLi のステートメント バインディングは、可変数のパラメーターには実際には適していません。

PDOに切り替えることを強くお勧めします

$stmt = $pdo->prepare('select * from users where name=? and email=?');
$stmt->execute($numericArrayOfParameters);
于 2011-11-02T12:32:52.673 に答える
-2

少しオフトピックですが、十分に重要だと思います。

mysql_stmt_bind_param のマニュアル ページのごく最近のユーザー コメントには、まさにこの質問に対する正確な回答が含まれています。

ほら、このサイトは怠惰を奨励していますが、古き良きグーグルやマニュアルができるよりも常にあなたの質問にうまく答えるとは限りません.

于 2011-11-02T12:43:27.227 に答える