Rumah >pangkalan data >tutorial mysql >Mengapa saya mendapat ralat 'Amaran: mysql_fetch_array(): argumen yang dibekalkan bukan hasil MySQL yang sah' dalam skrip PHP saya?
Ralat: "Amaran: mysql_fetch_array(): argumen yang dibekalkan bukan hasil MySQL yang sah"
Apabila cuba melaksanakan skrip PHP, anda menghadapi mesej ralat berikut:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result [duplicate]
Ralat ini berlaku apabila mysql_fetch_array() fungsi disediakan dengan keputusan MySQL yang tidak sah. Untuk menyelesaikan isu ini, mari kita periksa punca asas:
Keputusan MySQL Tidak Sah
Fungsi mysql_fetch_array() memerlukan objek hasil MySQL yang sah sebagai hujahnya. Objek ini dikembalikan oleh fungsi mysql_query() selepas melaksanakan pertanyaan. Jika pertanyaan tidak sah atau gagal, fungsi mysql_query() akan mengembalikan nilai palsu dan bukannya objek hasil yang sah.
Menyemak Ralat
Untuk menentukan sama ada pertanyaan ialah sumber isu, anda harus menyemak fungsi mysql_error() selepas melaksanakan pertanyaan. Fungsi ini akan memberikan butiran tentang sebarang ralat yang berlaku semasa pelaksanaan pertanyaan.
Kod Contoh:
$result = $connector->query('SELECT title,content FROM staff_vacancies ORDER BY ordering LIMIT 0,100'); if (!$result) { die('Invalid query: ' . mysql_error()); }
Fungsi pertanyaan() diubah suai
Untuk meningkatkan pengendalian ralat dan menyediakan mesej ralat yang lebih terperinci, anda boleh mengubah suai fungsi query() dalam kelas DbConnector anda seperti berikut:
function query($query) { $this->theQuery = $query; $queryId = mysql_query($query, $this->link); if (!$queryId) { throw new Exception(mysql_error() . ". Query was:\n\n" . $query . "\n\nError number: " . mysql_errno()); } return $queryId; }
Fungsi yang diubah suai ini akan membuang pengecualian dengan mesej ralat terperinci, termasuk nombor ralat dan pertanyaan yang gagal. Dengan mengendalikan pengecualian ini, anda boleh memberikan mesej ralat yang lebih mesra pengguna untuk membantu mengenal pasti dan menyelesaikan isu tersebut.
Atas ialah kandungan terperinci Mengapa saya mendapat ralat 'Amaran: mysql_fetch_array(): argumen yang dibekalkan bukan hasil MySQL yang sah' dalam skrip PHP saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!