Для некоторых это может быть немного элементарно, но в чем-то вроде следующего утверждения, что произойдет, если строка будет целым числом (например, 007, как в фильме):
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
Спасибо, ребята, все еще работаю над руководством по расшифровке (новичок в PHP), но пока не вижу деталей по этому вопросу.
Полное заявление Вот.
/* Execute a prepared statement by binding PHP variables */
$calories = 150;
$colour = 'red';
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour');
$sth->bindParam(':calories', $calories, PDO::PARAM_INT);
$sth->bindParam(':colour', $colour, PDO::PARAM_STR, 12);
$sth->execute();
В большинстве случаев ничего плохого не происходит. Насколько я знаю, SQL, как и PHP, является языком со свободной типизацией, который позволяет вам представлять число в виде строки, поэтому вы всегда можете отформатировать целые числа в виде строк. Есть только несколько исключительные случаи:
Теперь к вашему примеру. 007
на самом деле строка, а не целое число. Вы не можете получить целое число с ведущими нулями в PHP. Но если есть целое число, вы все равно можете связать его как строку.
Для чего нужен int 12?
Этот номер имеет очень конкретное назначение, используемое только для хранимых процедур, и не влияет на обычные запросы.
Таким образом, вы можете сказать, что пример довольно обманчив.
Других решений пока нет …