2013-02-08 22 views
19

これは初心者の間違いである必要がありますが、私はそれを見ていません。私は$年度の値をエコーし​​、$作るとき、私は値を見ていPHP mysqi bind_param変数の数がプリペアドステートメントのパラメータの数と一致しません

$mysqli = mysqli_connect($dbCredentials['hostname'], 
    $dbCredentials['username'], $dbCredentials['password'], 
    $dbCredentials['database']); 

if ($mysqli->connect_error) { 
    throw new exception('Connect Error (' . $mysqli->connect_errno . ') ' 
    . $mysqli->connect_error); 
} 

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types 
    WHERE year = ? AND make = '?' ORDER by model"); 

$stmt->bind_param('is', $year, $make); 

$stmt->execute(); 

が、私はこのスクリプトを実行すると、私はNULL値、および次の警告を得る:ここに私のコードからの抜粋です私のログファイルに表示されます。この場合

PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement 

、今年はint型でデータベース(10)である、と私はint型にキャストされていたコピーを渡して試してみました、とmake(varchar型であります20)をutf8_unicode_ciエンコーディングで置き換えます。何か不足していますか?あなたのプリペアドステートメントが間違っている

+0

**あなたは** bind_paramメソッドで何をしようとしましたか? –

+0

これは$ types文字列です。 "is"は、最初のパラメータが整数で、2番目が文字列であることを示す必要があります。 – TMorgan

答えて

34

、それは次のようになります。

$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model"); 

単一引用符はそれを作ったのですか?マーカではない値にする。 bind_param('is'

+0

ありがとうございます。それはまさにそれでした。 – TMorgan

+1

問題を解決した場合は、これを答えとしてマークすることを忘れないでください。 – NoLifeKing

関連する問題