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

Peringatan:mysql_query():3 bukan sumber MySQL-Link yang valid

PHP menggunakan sumber daya sebagai variabel khusus untuk menyimpan tautan ke objek eksternal, seperti file dan koneksi database. Setiap sumber daya diberikan id integer. (Dokumentasi )

Koneksi Gagal

Jika koneksi database gagal, Anda mungkin akan mendapatkan kesalahan "Specified variable is not a valid MySQL-Link resource", seperti yang disebutkan Dan Breen, karena variabel yang seharusnya menampung sumber daya adalah null.

$link = mysql_connect('localsoth','baduser','badpass'); // failed connection
$result = mysql_query("SELECT 1", $link); // throws error

Karena Anda mendapatkan ID sumber daya tertentu dalam pesan kesalahan, koneksi database kemungkinan ditutup secara tidak terduga karena suatu alasan. Program Anda masih memiliki variabel dengan ID sumber daya, tetapi objek eksternal tidak ada lagi. Ini mungkin karena mysql_close() panggilan ke suatu tempat sebelum panggilan ke mysql_query , atau kesalahan basis data eksternal yang menutup sambungan.

$link = mysql_connect();
mysql_close($link);
// $link may still contain a resource identifier, but the external object is gone
mysql_query("SELECT 1", $link);

Menggunakan Kembali Koneksi

Masalah dengan ekstensi mysql dan mysql_connect() adalah bahwa secara default jika Anda meneruskan parameter yang sama dalam panggilan berturut-turut, itu akan menggunakan kembali koneksi yang ada daripada membuat yang baru (Dokumentasi ). Ini dapat diperbaiki dengan meneruskan true ke $new_link parameter.
Saya mengalami ini sendiri pada sistem pengujian di mana data dari dua database terpisah dalam produksi digabungkan ke satu server pengujian, dan dalam pengujian mysql_xxx() panggilan fungsi berjalan satu sama lain dan merusak sistem.

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass'); // resource id 1 is given again
mysql_close($link2); // the connection at resource id 1 is closed
mysql_query("SELECT 1", $link1); // will fail, since the connection was closed

Menggunakan $new_link :

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass', true); // resource id 2 is given
mysql_close($link2); // the connection at resource id 2 is closed
mysql_query("SELECT 1", $link1); // the connection at resource id 1 is still open

Sunting:
Sebagai tambahan, saya akan merekomendasikan menggunakan MySQLi ekstensi atau PDO sebagai gantinya, jika memungkinkan. Ekstensi MySQL sudah cukup tua, dan tidak dapat memanfaatkan fitur apa pun setelah MySQL versi 4.1.3. Lihat http://www.php.net/manual/en/mysqli .overview.php untuk beberapa detail tentang perbedaan antara ketiga antarmuka.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ERROR 1130 (HY000):Host '' tidak diizinkan untuk terhubung ke server MySQL ini

  2. Bagaimana menemukan semua tabel yang memiliki kunci asing yang mereferensikan table.column tertentu dan memiliki nilai untuk kunci asing tersebut?

  3. Cara mengimpor file XML ke tabel database MySQL menggunakan XML_LOAD(); fungsi

  4. Temukan Nilai yang Tidak Mengandung Angka di MySQL

  5. Sintaks SQL DROP TABLE – Didaftarkan oleh DBMS