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

Bagaimana cara menggunakan mysqli_query() di PHP?

Harus saya akui, mysqli_query() entri manual tidak berisi contoh bersih tentang cara mengambil banyak baris. Mungkin karena rutinitasnya yang begitu rutin, yang dikenal oleh orang-orang PHP selama beberapa dekade:

$result = $link->query("DESCRIBE students");
while ($row = $result->fetch_assoc()) {
    // to print all columns automatically:
    foreach ($row as $value) {
        echo "<td>$value</td>";
        // OR to print each column separately:
        echo "<td>",$row['Field'],"</td><td>",$row['Type'],"</td>\n";
    }
}

Jika Anda ingin mencetak judul kolom, Anda harus memilih data Anda ke dalam array bersarang terlebih dahulu dan kemudian menggunakan kunci dari baris pertama:

// getting all the rows from the query
// note that handy feature of OOP syntax
$data = $link->query("DESC students")->fetch_all(MYSQLI_ASSOC);
// getting keys from the first row
$header = array_keys(reset($data));
// printing them
foreach ($header as $value) {
    echo "<td>$value</td>";
}
// finally printing the data
foreach ($data as $row) {
    foreach ($row as $value) {
        echo "<td>$value</td>";
    }
}

Beberapa host mungkin tidak memiliki dukungan untuk fetch_all() fungsi. Dalam kasus seperti itu, isi $data susun dengan cara biasa:

$data = [];
$result = $link->query("DESC students");
while ($row = $result->fetch_assoc())
{
    $data[] = $row;
}

Dua catatan penting yang harus saya tambahkan.

  1. Anda harus mengonfigurasi mysqli untuk membuang kesalahan secara otomatis alih-alih memeriksanya untuk setiap pernyataan mysqli secara manual. Untuk melakukannya, tambahkan baris ini sebelum mysqli_connect() :

     mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
    
  2. Catatan terpenting: tidak seperti mysql_query() , mysqli_query() memiliki kegunaan yang sangat terbatas. Anda dapat menggunakan fungsi ini hanya jika tidak ada variabel yang akan digunakan dalam kueri. Jika ada variabel PHP yang akan digunakan, Anda tidak boleh menggunakan mysqli_query() , tetapi selalu berpegang pada pernyataan yang disiapkan , seperti ini:

     $stmt = $mysqli->prepare("SELECT * FROM students WHERE class=?");
     $stmt->bind_param('i', $class);
     $stmt->execute();
     $data = $stmt->get_result()->fetch_all();
    

Agak bertele-tele, harus saya akui. Untuk mengurangi jumlah kode, Anda dapat menggunakan PDO atau mengadopsi fungsi pembantu sederhana untuk melakukan semua persiapan/pengikatan/eksekusi bisnis di dalam:

$sql = "SELECT * FROM students WHERE class=?";
$data = prepared_select($mysqli, $sql, [$class])->fetch_all();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pegas, Hibernasi, Blob pemuatan malas

  2. bagaimana cara memasukkan referensi kunci asing secara otomatis dalam tabel di mysql atau JDBC?

  3. Cara menentukan perubahan antar baris secara efisien menggunakan SQL

  4. Bagaimana cara mengubah karakter aneh ini? (ë, , , , )

  5. Menyetel ulang penunjuk array dalam hasil PDO