Kesalahan fatal: panggil ke fungsi yang tidak ditentukan mysql_real_escape_string

Pada artikel ini, kita akan belajar tentang kesalahan yang tidak tertangkap “Kesalahan yang tidak tertangkap. Panggil ke fungsi yang tidak terdefinisi mysql_connect()”

Error ini ditemui saat kami mencoba menggunakan fungsi “mysql_connect()” dari php5 di php7

Kesalahan fatal PHP. Kesalahan yang tidak tertangkap. Panggilan ke fungsi yang tidak terdefinisi kesalahan mysql_connect() dimunculkan karena fungsi mysql_* dihapus sepenuhnya dari PHP 7, yang sebelumnya tidak digunakan lagi di PHP 5. 5, tapi sekarang benar-benar dihapus

Fungsi MySQL yang lebih lama dihapus karena alasan berikut

  1. Jangan mengerjakan konsep Berorientasi Objek
  2. Tidak akan mendukung transaksi dan pernyataan yang disiapkan
  3. Merasa tidak aman

Cara memperbaiki kesalahan Undefined Function Mysql_connect()

Ada empat metode untuk memperbaiki kesalahan fungsi Mysql_connect() yang tidak terdefinisi

  • Gunakan MySQLi atau PDO
  • Menghubungkan ke Mysql dengan Objek Pdo Cukup Mudah
  • Menghubungkan ke MySQL dengan Objek Koneksi MySqli
  • Kembalikan ke PHP 5 Lama, perbarui kode Anda ke mysqli atau PDO, lalu tingkatkan ke PHP7

1. Gunakan MySQLi atau PDO

mysqli_connect()

Alih-alih menggunakan "mysql_connect()" kita harus menggunakan "mysqli_connect()" di php7 untuk menghindari kesalahan ini

Contoh. $mysql = new mysqli("localhost","root","password",''DB_name");

PDO (objek basis data php)

Contoh. $pdo = PDO baru('mysql. host=localhost;dbname=database_name ', 'username', 'password');

//pdo membutuhkan database yang valid untuk membuat koneksi. Jika database tidak ditentukan maka pengecualian akan muncul

2. Menghubungkan ke Mysql dengan Objek Pdo Cukup Mudah

$user = 'root'; // Mysql
User$password = ''; // Mysql Password
$server = 'localhost'; // Mysql Host
$database = 'my_database'; // Mysql Databse
// PDO Connection string
$pdo = new PDO("mysql:host=$server;dbname=$database", $user, $password);

3. Menghubungkan ke MySQL dengan Objek Koneksi MySqli

$con = mysqli_connect('localhost', 'username', 'password', 'database');
_

4. Kembalikan ke PHP 5 Lama, perbarui kode Anda ke mysqli atau PDO, lalu tingkatkan ke PHP7

Praktek terbaik

Gunakan pembungkus MySQLi dan pemetaan objek dengan pernyataan yang disiapkan

Contoh. Pengguna PHP-MySQLi-Database-Class https. //github. com/ThingEngineer/PHP-MySQLi-Database-Class

Dengan menggunakan MySQLi dengan pernyataan persiapan akan mengamankan koneksi database Anda  & di masa mendatang, jika perlu memutakhirkan Database Anda ke versi lain, Anda tidak perlu memperbarui semua string koneksi mysql Anda di semua halaman

 0){
  session_start();
  include "timeout.php";

  $_SESSION[namauser]     = $r[username_login];
  $_SESSION[namalengkap]  = $r[nama_lengkap];
  $_SESSION[passuser]     = $r[password_login];
  $_SESSION[leveluser]    = $r[level];
  $_SESSION[idsiswa]      = $r[id_siswa];

  // session timeout
  $_SESSION[login] = 1;
  timer();

	$sid_lama = session_id();

	session_regenerate_id();

	$sid_baru = session_id();

  mysqli_query("UPDATE siswa SET id_session='$sid_baru' WHERE username_login='$username'");

  $user = mysqli_query("SELECT * FROM online WHERE id_siswa='$_SESSION[idsiswa]'");
  if (mysqli_num_rows($user)== 0){
              $ip      = $_SERVER['REMOTE_ADDR']; // Mendapatkan IP komputer user
              $tanggal = date("Ymd"); // Mendapatkan tanggal sekarang
              $waktu   = time("U"); //
      mysqli_query("INSERT INTO online (ip,id_siswa,tanggal,online)
                               VALUES ('$ip','$_SESSION[idsiswa]','$tanggal','Y')");
  }
  else{
     $ip      = $_SERVER['REMOTE_ADDR']; // Mendapatkan IP komputer user
     $tanggal = date("Ymd"); // Mendapatkan tanggal sekarang
     $waktu   = time("U"); //
     mysqli_query("UPDATE online SET ip='$ip',tanggal='$tanggal',online='Y' WHERE id_siswa = '$_SESSION[idsiswa]'");
  }
  header('location:home');
}
else{  
  echo "";
}
}
?>
Kesalahan fatal. Kesalahan yang tidak tertangkap. Panggil ke fungsi yang tidak terdefinisi mysql_real_escape_string() di C. \xampp\htdocs\cobak\administrator\cek_login. php. 4 Jejak tumpukan. #0 C. \xampp\htdocs\cobak\administrator\cek_login. php(8). anti_injection('admin') #1 {main} dilemparkan ke dalam C. \xampp\htdocs\cobak\administrator\cek_login. php on line 4 0){ session_start(); . php"; $_SESSION[namauser] = $r[username_login]; $_SESSION[namalengkap] = $r[nama_lengkap]; $_SESSION[passuser] = $r[password_login]; $_SESSION[leveluser] = $r[level] . rumah');

Apa yang bisa saya gunakan selain mysql_real_escape_string?

mysql_real_escape_string. Ekstensi ini sudah tidak digunakan lagi sejak PHP 5. 5. 0, dan akan dihapus di masa mendatang. Sebagai gantinya, ekstensi MySQLi atau PDO_MySQL harus digunakan.

Apa gunanya fungsi mysql_real_escape_string ()?

Fungsi real_escape_string() / mysqli_real_escape_string() mengeluarkan karakter khusus dalam string untuk digunakan dalam kueri SQL, dengan mempertimbangkan rangkaian karakter koneksi saat ini.

Mengapa mysql_real_escape_string memerlukan koneksi?

mysql_real_escape_string() dan pernyataan yang disiapkan memerlukan koneksi ke database sehingga mereka dapat keluar dari string menggunakan rangkaian karakter yang sesuai - jika tidak, SQL .

Apakah mysql_real_escape_string mencegah injeksi SQL?

PHP menyediakan mysql_real_escape_string() untuk melepaskan karakter khusus dalam sebuah string sebelum mengirim kueri ke MySQL. Fungsi ini diadopsi oleh banyak orang untuk menghindari tanda kutip tunggal dalam string dan pada kesempatan yang sama mencegah serangan injeksi SQL .