Краткий способ проверить наличие переменных в MySQL INSERT QUERY, используя PHP - PullRequest
0 голосов
/ 27 августа 2009

Я пишу PHP-скрипт для добавления товаров в корзину. В моей корзине покупок есть поля для идентификатора пользователя, идентификатора продукта, идентификатора сеанса, заметок и некоторых других. Некоторые поля могут быть пустыми. Например:

Если кто-то не вошел в систему, я сохраню его идентификатор сеанса в таблице и, если он войдет, добавлю свой идентификатор пользователя, чтобы у меня был постоянный способ сопоставления элементов в таблице с пользователем. Если они есть, я добавлю ID пользователя. Что касается запроса INSERT, могу ли я сделать что-то вроде этого:

$ add_sql = "ВСТАВИТЬ в sessionBasket (идентификатор пользователя) ЗНАЧЕНИЯ ( '". isset ($ _ SESSION [" userid "])? $ _SESSION [" userid "]:" ")."' ";

Это сэкономило бы мне так много времени на проверку переменных и ветвление, потому что люди могли входить в систему или нет, элементы могли иметь заметки или нет, такого рода вещи.

1 Ответ

1 голос
/ 27 августа 2009

Хлоп! SQL-инъекция! Вы можете потерять всю базу данных

Вы должны смотреть на подготовленные операторы для вставки SQL.

Вам нужно использовать интерфейс mysqli, но он выглядит так:

$statement = $db_connection->prepare("insert into ... VALUES(?)");
$statement->bind_param("id", $sid);
$statement->execute();

Это предотвратит атаки с использованием SQL-инъекций.

При абсолютном минимуме вы должны по крайней мере экранировать строку.

$sid = isset($_SESSION[userid]) ? mysql_real_escape_string($_SESSION[userid])) : '';
$add_sql = "insert into ... values($sid)";
...