Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć bezpieczną przygotowaną instrukcję mysql w php?

Oto przykład użycia mysqli (składnia obiektowa - dość łatwa do przetłumaczenia na składnię funkcji, jeśli chcesz):

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

Ponadto, jeśli chcesz w łatwy sposób pobrać tablice asocjacyjne (do użycia z SELECT *) zamiast określać dokładnie, z którymi zmiennymi się powiązać, oto przydatna funkcja:

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

Aby go użyć, po prostu wywołaj go zamiast wywoływania 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. Generowanie serii dat

  2. Jak stworzyć bezpieczną przygotowaną instrukcję mysql w php?

  3. Jak uruchomić wiele instancji MySQL na tym samym komputerze?

  4. Funkcja hasła MySQL

  5. Jak importować / przywracać tabele MySql za pomocą PHP