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?

Mengapa saya mendapat ralat 'Amaran: mysql_fetch_array(): argumen yang dibekalkan bukan hasil MySQL yang sah' dalam skrip PHP saya?

Linda Hamilton
Linda Hamiltonasal
2024-12-17 15:53:12466semak imbas

Why am I getting the

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!

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