параметры в MySQLi - PullRequest
       16

параметры в MySQLi

9 голосов
/ 08 апреля 2009

Я использую PHP с MySQLi, и я нахожусь в ситуации, когда у меня есть запросы вроде

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

Пока что я написал некоторый код, который объединяет массив, который я ему предоставляю, например:

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

Есть ли более эффективный способ сделать это?

Я довольно обеспокоен инъекциями MySQL - это кажется очень уязвимым. Спасибо!

1 Ответ

19 голосов
/ 08 апреля 2009

Как ни странно, название вашего вопроса в основном является ответом на него. Вы хотите сделать что-то вроде этого, используя параметризованные запросы mysqli:

$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 руководства , в частности, о функциях, связанных с MySQLi_STMT .

Обратите внимание, что я лично предпочитаю использовать PDO вместо mysqli, мне не нравятся все вещи bind_param / bind_result, которые делает mysqli. Если мне нужно его использовать, я пишу обертку вокруг него, чтобы он работал как PDO.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...