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

Bagaimana cara membuat pernyataan yang disiapkan mysql aman di php?

Berikut adalah contoh menggunakan mysqli (objek-sintaks - cukup mudah untuk menerjemahkan ke fungsi sintaks jika Anda inginkan):

$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("SELECT * FROM mytable where userid=? AND category=? ORDER BY id DESC");
$stmt->bind_param('ii', intval($_GET['userid']), intval($_GET['category']));
$stmt->execute();

$stmt->store_result();
$stmt->bind_result($column1, $column2, $column3);

while($stmt->fetch())
{
    echo "col1=$column1, col2=$column2, col3=$column3 \n";
}

$stmt->close();

Juga, jika Anda menginginkan cara mudah untuk mengambil array asosiatif (untuk digunakan dengan SELECT *) daripada harus menentukan dengan tepat variabel apa yang akan diikat, inilah fungsi praktisnya:

function stmt_bind_assoc (&$stmt, &$out) {
    $data = mysqli_stmt_result_metadata($stmt);
    $fields = array();
    $out = array();

    $fields[0] = $stmt;
    $count = 1;

    while($field = mysqli_fetch_field($data)) {
        $fields[$count] = &$out[$field->name];
        $count++;
    }
    call_user_func_array(mysqli_stmt_bind_result, $fields);
}

Untuk menggunakannya, cukup panggil saja alih-alih memanggil bind_result:

$stmt->store_result();

$resultrow = array();
stmt_bind_assoc($stmt, $resultrow);

while($stmt->fetch())
{
    print_r($resultrow);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung desil di MySQL berdasarkan total

  2. Membangun kembali Budak Replikasi MySQL 8.0 Menggunakan Plugin Klon

  3. 15 Pertanyaan Wawancara Dasar MySQL untuk Administrator Basis Data

  4. Prosedur Tersimpan MySQL

  5. MySQL:Transaksi vs Mengunci Tabel