Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Làm cách nào để tạo một câu lệnh chuẩn bị sẵn mysql an toàn trong php?

Đây là một ví dụ sử dụng mysqli (cú pháp đối tượng - khá dễ dàng để dịch sang cú pháp hàm nếu bạn muốn):

$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();

Ngoài ra, nếu bạn muốn một cách dễ dàng để lấy các mảng liên kết (để sử dụng với SELECT *) thay vì phải chỉ định chính xác những biến nào cần liên kết, đây là một hàm tiện dụng:

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);
}

Để sử dụng nó, chỉ cần gọi nó thay vì gọi 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. Tổng quan về PostgreSQL &MySQL Cross Replication

  2. Cú pháp DELETE của SQL - Được DBMS liệt kê

  3. SQL Lựa chọn từ hai Bảng có nối bên trong và giới hạn

  4. Khóa chính có được tự động lập chỉ mục trong MySQL không?

  5. Nhiều câu lệnh chọn trong một truy vấn