Satu-satunya saat saya merasa penting untuk menggunakan parameter integer adalah dalam LIMIT
klausa.
SELECT
...
LIMIT ?, ?
MySQL tidak menerima literal string yang dikutip dalam konteks ini, dan tidak menerima parameter dengan tipe string. Anda harus menggunakan bilangan bulat.
Lihat Kueri PDO berparameter dan Klausa `LIMIT` - tidak berfungsi untuk tes saya ini. Itu adalah pertanyaan tentang PDO, dan saya tidak menguji mysqli, tetapi saya yakin ini adalah persyaratan MySQL sisi server untuk menggunakan parameter integer dalam kasus ini. Jadi itu juga berlaku untuk mysqli.
Dalam semua kasus lain (AFAIK), MySQL dapat mengubah string menjadi bilangan bulat dengan membaca digit utama dalam string, dan mengabaikan karakter berikut.
@Dharman dalam komentar di bawah membuat referensi ke dukungan MySQL untuk bilangan bulat di ORDER BY
:
SELECT
...
ORDER BY ?
Sebuah bilangan bulat dalam ORDER BY
artinya mengurutkan berdasarkan kolom di posisi itu, bukan berdasarkan nilai konstanta angka:
SELECT
...
ORDER BY 1 -- sorts by the 1st column
Tetapi nilai string yang setara yang berisi nomor itu tidak bertindak sama. Ini mengurutkan berdasarkan nilai konstan string, yang berarti setiap baris terikat, dan urutannya akan berubah-ubah.
SELECT
...
ORDER BY '1' -- sorts by a constant value, so all rows are tied
Oleh karena itu, ini adalah kasus lain di mana tipe data untuk parameter kueri penting.
Di sisi lain, menggunakan nomor urut untuk mengurutkan berdasarkan kolom di posisi itu di ORDER BY
atau GROUP BY
sudah usang, dan kita tidak boleh bergantung pada penggunaan SQL tersebut.