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

Bagaimana cara mengonversi skrip menggunakan fungsi mysql_ untuk menggunakan fungsi mysqli_?

Catatan: Mengonversi dari mysql_ ke mysqli_ mungkin tidak optimal. Pertimbangkan PDO jika Anda siap untuk mengonversi semua kode Anda menjadi OOP .

Mungkin tergoda untuk mencoba mengganti semua instance mysql_ dengan mysqli_ dan doakan berhasil. Anda akan dekat tetapi tidak tepat sasaran.

Menghubungkan ke database:

Untungnya, mysqli_connect bekerja cukup dekat untuk mysql_query bahwa Anda bisa menukar nama fungsinya.

mysql_:

$con = mysql_connect($host, $username, $password);

mysqli_:

$con = mysqli_connect($host, $username, $password);

Memilih database

Sekarang, dengan sebagian besar fungsi lainnya di mysqli_ perpustakaan, Anda harus melewati mysqli_select_db koneksi database sebagai pertama parameter. Sebagian besar mysqli_ fungsi membutuhkan objek koneksi terlebih dahulu.

Untuk fungsi ini, Anda bisa mengganti urutan argumen yang Anda berikan ke fungsi. Jika Anda tidak memberikan objek koneksi sebelumnya, Anda harus menambahkannya sebagai parameter pertama sekarang.

mysql_:

mysql_select_db($dbname, $con);

mysqli_:

mysqli_select_db($con, $dbname);

Sebagai bonus, Anda juga dapat meneruskan nama database sebagai parameter keempat ke mysqli_connect - mengabaikan kebutuhan untuk memanggil mysqli_select_db .

$con = mysqli_connect($host, $username, $password, $dbname);

Sanitasi masukan pengguna

Menggunakan mysqli_real_escape_string sangat mirip dengan mysql_real_escape_string . Anda hanya perlu melewatkan objek koneksi sebagai parameter pertama.

mysql_:

$value1 = mysql_real_escape_string($input_string);

mysqli_:

$value1 = mysqli_real_escape_string($con, $input_string);

Sangat Penting:Mempersiapkan dan Menjalankan Kueri

Salah satu alasan mysql_ fungsi yang ditinggalkan untuk memulai adalah ketidakmampuan mereka untuk menangani pernyataan yang disiapkan. Jika Anda cukup mengonversi kode Anda menjadi mysqli_ tanpa mengambil langkah penting ini, Anda akan menghadapi beberapa kelemahan terbesar mysql_ fungsi.

Ada baiknya membaca artikel ini tentang pernyataan yang disiapkan dan manfaatnya:

Wikipedia - Pernyataan yang Disiapkan

PHP.net - Pernyataan yang Disiapkan MySQLi

Catatan:Saat menggunakan pernyataan yang telah disiapkan, sebaiknya cantumkan secara eksplisit setiap kolom yang Anda coba kueri, daripada menggunakan * notasi untuk menanyakan semua kolom. Dengan cara ini Anda dapat memastikan bahwa Anda telah memperhitungkan semua kolom dalam panggilan Anda ke mysqli_stmt_bind_result .

mysql_:

$query = 'SELECT * FROM table1 WHERE table1.col1=' . $value1 . '';
$result = mysql_query($query, $con);
while($row = mysql_fetch_assoc*$result)
{
    $col1 = $row['col1'];
    $col2 = $row['col2'];

    echo $col1 . ' ' . $col2 . '<br />';
}

mysqli_:

$query = 'SELECT col1,col2 FROM table1 WHERE table1.col1=?';
if ($stmt = mysqli_prepare($link, $query)) {

    /* pass parameters to query */
    mysqli_stmt_bind_param($stmt, "s", $value1);

    /* run the query on the database */
    mysqli_stmt_execute($stmt);

    /* assign variable for each column to store results in */
    mysqli_stmt_bind_result($stmt, $col1, $col2);

    /* fetch values */
    while (mysqli_stmt_fetch($stmt)) {
        /*
            on each fetch, the values for each column 
            in the results are automatically stored in 
            the variables we assigned using 
            "mysqli_stmt_bind_result"
        */
        echo $col1 . ' ' . $col2 . '<br />';
    }

    /* close statement */
    mysqli_stmt_close($stmt);
}

Menampilkan kesalahan

Menampilkan kesalahan bekerja sedikit berbeda dengan mysqli_ . mysqli_error membutuhkan objek koneksi sebagai parameter pertamanya. Tapi bagaimana jika koneksi gagal? mysqli_ memperkenalkan sekumpulan kecil fungsi yang tidak memerlukan objek koneksi:mysqli_connect_* fungsi.

mysql_:

if (!$con) {
    die('Could not connect: ' . mysql_error());
}

if (!$result) {
    die('SQL Error: ' . mysql_error());
}

mysqli_:

/* check connection error*/
if (mysqli_connect_errno()) {
    die( 'Could not connect: ' . mysqli_connect_error() );
}

/* check query error */
if ($stmt = mysqli_prepare($link, $query)) {

    // ... execute query

    if (mysqli_stmt_error($stmt)) {
        echo 'SQL Error: ' . mysqli_stmt_error($stmt);
    }
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. bagaimana cara mengisi nilai kolom mysql berdasarkan rumus?

  2. Bagaimana cara mendapatkan hanya tabel, bukan tampilan menggunakan SHOW TABLES?

  3. Cara menentukan perubahan antar baris secara efisien menggunakan SQL

  4. cara masuk ke mysql dan meminta database dari terminal linux

  5. Pembandingan Kinerja MySQL:MySQL 5.7 vs MySQL 8.0