Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Amaran PHP: mysqli_query(): Penyelesaian kepada pertanyaan Kosong

Amaran PHP: mysqli_query(): Penyelesaian kepada pertanyaan Kosong

王林
王林asal
2023-06-22 16:45:111656semak imbas

Apabila membangunkan aplikasi web menggunakan PHP, anda sering menghadapi pelbagai masalah. Antaranya, beberapa masalah biasa adalah berkaitan dengan pangkalan data MySQL. Satu masalah ialah ralat "Amaran PHP: mysqli_query(): Empty query". Artikel ini menerangkan punca ralat ini dan cara membetulkannya.

Mula-mula, mari lihat maksud ralat ini. Apabila anda melaksanakan pertanyaan MySQL menggunakan fungsi mysqli_query, ralat ini berlaku jika pertanyaan kosong. Ini bermakna anda cuba melaksanakan pertanyaan MySQL, tetapi rentetan pertanyaan itu kosong. Contohnya, rentetan pertanyaan dalam kod berikut kosong:

$result = mysqli_query($conn, "");

Ralat ini akan berlaku apabila anda cuba melaksanakan pertanyaan ini. Ini boleh berlaku dalam pelbagai situasi. Berikut ialah beberapa sebab:

  1. Ralat sintaks: Ralat sintaks dalam rentetan pertanyaan boleh menyebabkannya kosong. Sebagai contoh, jika anda secara tidak sengaja meninggalkan kurungan atau tanda petikan, ini boleh menyebabkan rentetan pertanyaan menjadi kosong.
  2. Pembolehubah tidak ditakrifkan: Jika anda menggunakan pembolehubah PHP dalam rentetan pertanyaan dan pembolehubah ini tidak ditakrifkan sebelum pertanyaan, ini boleh menyebabkan rentetan pertanyaan menjadi kosong.
  3. Ralat sambungan pangkalan data: Jika terdapat pepijat dalam kod anda dan ia gagal menyambung ke pangkalan data MySQL dengan betul, pertanyaan mungkin kosong.

Jadi, bagaimana untuk menyelesaikan masalah ini? Berikut ialah beberapa penyelesaian yang mungkin:

  1. Cari ralat sintaks dalam rentetan pertanyaan: Anda harus mencetak rentetan pertanyaan dengan pernyataan gema supaya anda boleh menyemaknya untuk ralat sintaks. Apabila mencari ralat sintaks, semak kurungan, tanda petikan dan koma dengan teliti.

Contohnya, rentetan pertanyaan berikut:

$sql = "SELECT * FROM myTable WHERE id = ";

Apabila pembolehubah $id tidak ditentukan, pertanyaan Rentetan itu kosong. Anda harus menambah nilai $id, atau menukar rentetan pertanyaan kepada:

$sql = "SELECT * FROM myTable";

  1. Semak sama ada sambungan MySQL OK: Jika anda tidak dapat disambungkan dengan betul ke pangkalan data MySQL, pertanyaan mungkin kosong. Anda boleh memastikan bahawa pelayan MySQL sedang berjalan dan nama pengguna dan kata laluan adalah betul, dan anda juga boleh cuba menukar nombor port pelayan MySQL.
  2. Gunakan fungsi mysqli_real_escape_string untuk melarikan diri dari rentetan pertanyaan: Jika anda membina rentetan pertanyaan dan menggunakan pembolehubah, adalah disyorkan untuk menggunakan fungsi mysqli_real_escape_string untuk melarikan diri dari pembolehubah ini. Ini akan memastikan bahawa rentetan pertanyaan anda tidak mengandungi aksara yang salah, sekali gus menghalang rentetan pertanyaan daripada kosong.

Sebagai contoh, kod berikut menggunakan pembolehubah untuk membina rentetan pertanyaan:

$name = "Tom";
$sql = "SELECT * FROM myTable WHERE name = '$name '";

Anda boleh menggunakan fungsi mysqli_real_escape_string untuk melarikan diri dari pembolehubah:

$name = "Tom";
$name = mysqli_real_escape_string($conn, $name);
$ sql = "SELECT * FROM myTable WHERE name = '$name'";

Ini akan memastikan bahawa rentetan pertanyaan tidak kosong, walaupun $name mengandungi petikan tunggal atau berganda.

Ringkasan:

Apabila menggunakan fungsi mysqli_query untuk melaksanakan pertanyaan MySQL, jika rentetan pertanyaan kosong, ralat "Amaran PHP: mysqli_query(): Empty query" akan muncul. Ini mungkin disebabkan oleh ralat sintaks, pembolehubah tidak ditentukan, atau ralat sambungan MySQL, dsb. Untuk menyelesaikan isu ini, anda boleh menyemak ralat sintaks dalam rentetan pertanyaan, pastikan pelayan MySQL berjalan dan disambungkan dengan betul, gunakan fungsi mysqli_real_escape_string untuk melarikan diri pembolehubah untuk memastikan rentetan pertanyaan tidak kosong.

Atas ialah kandungan terperinci Amaran PHP: mysqli_query(): Penyelesaian kepada pertanyaan Kosong. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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