Единственият път, когато открих, че е важно да се използва целочислен параметър, е в LIMIT
клауза.
SELECT
...
LIMIT ?, ?
MySQL не приема низови литерали в кавички в този контекст и не приема параметри с тип низ. Трябва да използвате цяло число.
Вижте Параметризирана и PDO заявка Клауза `LIMIT` - не работи за моите тестове по този въпрос. Това беше въпрос за PDO и не тествах mysqli, но вярвам, че е изискване на MySQL от страна на сървъра да се използват целочислени параметри в този случай. Така че трябва да важи и за mysqli.
Във всички останали случаи (AFAIK), MySQL може да преобразува низове в цели числа, като чете водещите цифри в низа и игнорира всички следващи знаци.
@Dharman в коментар по-долу се позовава на поддръжката на MySQL за цели числа в ORDER BY
:
SELECT
...
ORDER BY ?
Цяло число в ORDER BY
означава сортиране по колоната в тази позиция, а не по константната стойност на числото:
SELECT
...
ORDER BY 1 -- sorts by the 1st column
Но еквивалентна стойност на низ, съдържаща това число, не действа по същия начин. Сортира по константната стойност на низа, което означава, че всеки ред е свързан и редът на сортиране ще бъде произволен.
SELECT
...
ORDER BY '1' -- sorts by a constant value, so all rows are tied
Следователно това е друг случай, в който типът данни за параметър на заявка е важен.
От друга страна, използването на поредни числа за сортиране по колоната в тази позиция в ORDER BY
или GROUP BY
е отхвърлен и не трябва да разчитаме на това използване на SQL.