Это должно быть ошибкой новичка, но я этого не вижу. Вот фрагмент моего кода:
$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, я вижу значения, но когда я запускаю этот скрипт, я получаю нулевое значение, и в моем файле журнала появляется следующее предупреждение:
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. Я что-то упускаю?
Ваше подготовленное заявление неверно, оно должно быть:
$stmt = $mysqli->prepare("SELECT DISTINCT model FROM vehicle_types WHERE year = ? AND make = ? ORDER by model");
Одиночные цитаты сделали это? значение не маркер. Это будет строка, потому что вы выполняете bind_param('is'
как bind_param('is'