Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

mysqli_stmt::bind_param() - tentukan tipe data lain selain s untuk setiap parameter

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengambil baris RAND() tanpa ORDER BY RAND() hanya dalam satu kueri

  2. mysql:gunakan SET atau banyak kolom?

  3. Grup MySQL berdasarkan nomor minggu dengan beberapa kolom tanggal

  4. Cara andal memulihkan gumpalan MySQL

  5. php:SQLSTATE[HY000] [2002] Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya