これは初心者の間違いに違いありませんが、私はそれを見ていません。ここに私のコードからのスニペットがあります:
$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();
$year と $make の値をエコー出力すると値が表示されますが、このスクリプトを実行すると null 値が返され、ログ ファイルに次の警告が表示されます。
PHP Warning: mysqli_stmt::bind_param(): Number of variables doesn't match number of parameters in prepared statement
この場合、年は int(10) 型でデータベースにあり、int としてキャストされたコピーを渡そうとしました。make は utf8_unicode_ci エンコーディングの varchar(20) です。何か不足していますか?