Mysql
 sql >> база данни >  >> RDS >> Mysql

mysqli_stmt::bind_param() - посочете друг тип данни освен s за всеки параметър

Единственият път, когато открих, че е важно да се използва целочислен параметър, е в 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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Таблицата за миграция на Laravel вече съществува, но искам да добавя нова, а не по-стара

  2. изберете само когато различна стойност

  3. Миграция на Laravel :Премахнете onDelete('cascade') от съществуващ външен ключ

  4. php mysql група по дата с формат yyyy-mm-dd

  5. Скриптът няма да влезе