Mysql
 sql >> Baza danych >  >> RDS >> Mysql

mysqli_stmt::bind_param() - określ inny typ danych niż s dla każdego parametru

Jedynym przypadkiem, w którym zauważyłem, że ważne jest użycie parametru liczby całkowitej, jest w LIMIT klauzula.

SELECT
...
LIMIT ?, ?

MySQL nie akceptuje w tym kontekście literałów napisów w cudzysłowie i nie akceptuje parametrów typu string. Musisz użyć liczby całkowitej.

Zobacz Sparametryzowane zapytanie PDO i Klauzula `LIMIT` - nie działa za moje testy na tym. To było pytanie o PDO i nie testowałem mysqli, ale uważam, że jest to wymóg MySQL po stronie serwera, aby używać parametrów całkowitych w tym przypadku. Powinno to więc dotyczyć również mysqli.

We wszystkich innych przypadkach (AFAIK) MySQL jest w stanie konwertować łańcuchy na liczby całkowite, odczytując wiodące cyfry w łańcuchu i ignorując kolejne znaki.

@Dharman w poniższym komentarzu odwołuje się do obsługi przez MySQL liczb całkowitych w ORDER BY :

SELECT
...
ORDER BY ?

Liczba całkowita w ORDER BY oznacza sortowanie według kolumny na tej pozycji, a nie według stałej wartości liczby:

SELECT
...
ORDER BY 1 -- sorts by the 1st column

Ale równoważna wartość ciągu zawierająca tę liczbę nie działa tak samo. Sortuje według stałej wartości ciągu, co oznacza, że ​​każdy wiersz jest powiązany, a porządek sortowania będzie dowolny.

SELECT
...
ORDER BY '1' -- sorts by a constant value, so all rows are tied

Dlatego jest to kolejny przypadek, w którym ważny jest typ danych dla parametru zapytania.

Z drugiej strony, używając liczb porządkowych do sortowania według kolumny w tej pozycji w ORDER BY lub GROUP BY jest przestarzałe i nie powinniśmy polegać na takim użyciu 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. Ustaw maksymalny czas wykonania w MYSQL / PHP

  2. błąd aktualizacji rekordu w bazie danych

  3. Instrukcje UPDATE są w stanie końcowym zapytania

  4. Kod błędu:1005. Nie można utworzyć tabeli „...” (errno:150)

  5. Qt MySQL -------- Nie można otworzyć pliku dołączanego:'mysql.h':