MySQLi parametrelerin

1 Cevap php

Ben MySQLi PHP ile yaşıyorum ve ben gibi sorguları var bir durumda değilim

SELECT $fields FROM $table WHERE $this=$that AND $this2=$that2

Bugüne kadar ben, örneğin, onu vermek bir dizi yukarı eklerinin bazı kod yazdık:

$search = array(name=michael, age=20) //turns into
SELECT $fields FROM $table WHERE name=michael AND age=20

Bunu yapmak için daha etkili bir yolu var mı?

I'm rather worried about MySQL injections - this seems very vulnerable. Thanks!

1 Cevap

İşin tuhafı, sorunuzun başlık temelde ona cevaptır. Sen mysqli parametreli sorguları kullanarak, böyle bir şey yapmak istiyorum:

$db = new mysqli(<database connection info here>);
$name = "michael";
$age = 20;

$stmt = $db->prepare("SELECT $fields FROm $table WHERE name = ? AND age = ?");
$stmt->bind_param("si", $name, $age);
$stmt->execute();
$stmt->close();

mysqli section of the manual olarak daha fazla bilgi, MySQLi_STMT ile ilişkili özel olarak işlev görür.

Ben şahsen PDO mysqli'nin üzerinde, ben mysqli yaptığı tüm bind_param / bind_result şeyleri sevmiyorum kullanmayı tercih unutmayın. Bunu kullanmak için varsa ben daha PDO gibi iş yapmak için onun etrafında sarıcı yazmak.