Apa yang Boleh Menyebabkan SQLSTATE[HY000]: Ralat umum: 2031 dalam PDO?

Susan Sarandon
Lepaskan: 2024-10-24 17:02:02
asal
608 orang telah melayarinya

What Can Cause the SQLSTATE[HY000]: General error: 2031 in PDO?

Ralat: Ralat PDO: SQLSTATE[HY000]: Ralat umum: 2031

Ralat ini menunjukkan bahawa terdapat masalah dengan parameter pertanyaan SQL. Dalam kes ini, nampaknya isu ini adalah dengan kaedah bindValue() yang digunakan untuk menambah LIMIT ruang letak pada pertanyaan secara manual.

Kod berikut menyebabkan ralat:

<code class="php">if ($limit) {
   $sth->bindValue(':page', $page - 1, PDO::PARAM_INT);
   $sth->bindValue(':entries_per_page', $page * $entries_per_page, PDO::PARAM_INT);
}</code>
Salin selepas log masuk

Ralat berlaku kerana pertanyaan mengandungi ruang letak (:page dan :entry_per_page) yang perlu diikat menggunakan bindValue() sebelum pertanyaan boleh dilaksanakan. Walau bagaimanapun, sebelum menggunakan bindValue() untuk mengikat pemegang tempat LIMIT, enjin mengubahnya menjadi rentetan. Untuk menyelesaikan isu ini, anda boleh menggunakan kod berikut:

<code class="php">if ($limit) {
   $query = str_replace(':page', $page - 1, $query);
   $query = str_replace(':entries_per_page', $page * $entries_per_page, $query);
   $sth->execute($criteria);
}</code>
Salin selepas log masuk

Kod ini akan menggantikan ruang letak dalam pertanyaan dengan nilainya sebelum melaksanakan pertanyaan.

Berhati-hati dengan Pendua Nama Parameter

Adalah penting untuk ambil perhatian bahawa ralat 2031 juga boleh disebabkan oleh mengikat dua nilai pada nama parameter yang sama. Contohnya:

<code class="php">$sth->bindValue(':colour', 'blue');
$sth->bindValue(':colour', 'red');</code>
Salin selepas log masuk

Menggunakan nama parameter yang sama dua kali akan mengakibatkan ralat. Oleh itu, adalah penting untuk memastikan bahawa setiap nama parameter adalah unik.

Atas ialah kandungan terperinci Apa yang Boleh Menyebabkan SQLSTATE[HY000]: Ralat umum: 2031 dalam PDO?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!