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

SQLSTATE[HY093]:Nomor parameter tidak valid:jumlah variabel terikat tidak cocok dengan jumlah token pada baris 102

Anda tidak mengikat semua ikatan Anda di sini

$sql = "SELECT SQL_CALC_FOUND_ROWS *, UNIX_TIMESTAMP(publicationDate) AS publicationDate     FROM comments WHERE articleid = :art 
ORDER BY " . mysqli_escape_string($order) . " LIMIT :numRows";

$st = $conn->prepare( $sql );
$st->bindValue( ":art", $art, PDO::PARAM_INT );

Anda telah mendeklarasikan pengikatan yang disebut :numRows tetapi Anda tidak pernah benar-benar mengikat apa pun padanya.

PEMBARUAN 2019:Saya terus mendapatkan suara positif untuk ini dan itu mengingatkan saya pada saran lain

Tanda kutip ganda adalah interpolasi string dalam PHP, jadi jika Anda akan menggunakan variabel dalam string tanda kutip ganda, tidak ada gunanya menggunakan operator concat. Di sisi lain, tanda kutip tunggal bukanlah interpolasi string, jadi jika Anda hanya memiliki satu variabel di akhir string, itu masuk akal, atau gunakan saja untuk seluruh string.

Faktanya, ada operasi mikro yang tersedia di sini karena penerjemah tidak peduli tentang penguraian string untuk variabel. Peningkatannya hampir tidak terlihat dan sama sekali tidak dapat diabaikan dalam skala kecil. Namun, dalam aplikasi yang sangat besar, terutama monolit lama yang bagus, akan ada peningkatan kinerja yang nyata jika string digunakan seperti ini. (dan IMO, lebih mudah untuk dibaca)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. docker-compose mysql init sql tidak dieksekusi

  2. Sertakan penghitung tambahan di set hasil MySQL

  3. Berapa panjang maksimum data yang dapat saya masukkan ke dalam kolom BLOB di MySQL?

  4. Saya ingin menambahkan 30 hari ke baris tanggal mysql

  5. Migrasi Online dari MySQL 5.6 Non-GTID ke MySQL 5.7 dengan GTID