Это один пример, в котором использование подготовленных операторов действительно избавляет вас от некоторых проблем.
В MySQL для вставки нулевого значения вы должны указать его в INSERT
времени илиоставьте поле, которое требует дополнительного ветвления:
INSERT INTO table2 (f1, f2)
VALUES ('String Value', NULL);
Однако, если вы хотите вставить значение в это поле, теперь вы должны добавить свой код, чтобы добавить одинарные кавычки:
INSERT INTO table2 (f1, f2)
VALUES ('String Value', 'String Value');
Подготовленные заявления автоматически сделают это за вас.Они знают разницу между string(0) ""
и null
и пишут ваш запрос соответствующим образом:
$stmt = $mysqli->prepare("INSERT INTO table2 (f1, f2) VALUES (?, ?)");
$stmt->bind_param('ss', $field1, $field2);
$field1 = "String Value";
$field2 = null;
$stmt->execute();
Он скрывает ваши поля для вас, гарантирует, что вы не забудете связать параметр.Нет причин оставаться с расширением mysql
.Используйте mysqli
и вместо этого подготовленные операторы .Вы спасете себя от боли.