MySQL вставлять двойные кавычки PHP
Я использую подготовленный ниже оператор для вставки в MySQL. Если я попытаюсь вставить что-то с $descrip
содержащий " (двойная кавычка), вставка останавливается в этом месте.
Пример: Попытка вставить 16" Solid Steel Tube
Запись в строке таблицы показывает только 16
и останавливается на " (двойная кавычка) и не будет показывать остальное $descrip
,
Что я делаю неправильно?
$stmt = $db->prepare("INSERT INTO line_items (quote_id, part, descrip, qty, price, net, notes, datasheet) VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param("ssssssss", $quote_id, $part, $descrip, $qty, $price, $net, $notes, $datasheet);
foreach($_POST['part'] as $i => $item) {
$part = $item;
$descrip = $_POST['descrip'][$i]; //This wont enter something with double qutoes such as 16" Solid Steel Tube
$qty = $_POST['qty'][$i];
$price = $_POST['price'][$i];
$net = $_POST['net'][$i];
$notes = $_POST['notes'][$i];
$datasheet = $_POST['datasheet'][$i];
$stmt->execute();
}
РЕДАКТИРОВАТЬ: FYI- я выбираю $descrip
из другой таблицы в базе данных, которая правильно имеет это в строке как 16" Solid Steel Tube
, Когда я пытаюсь скопировать этот элемент в другую таблицу через мое подготовленное утверждение, то есть когда оно вставляется неправильно.
1 ответ
Исходя из твоего намека...
Я выбираю
$descrip
из другой таблицы в базе данных, в которой это правильно указано в строке как " 16" Solid Steel Tube". Когда я пытаюсь скопировать этот элемент в другую таблицу с помощью моего подготовленного оператора, то есть когда он вставляется неправильно.
Я полагаю, вы используете это значение в такой форме (но, возможно, не совсем)
<input type="text" value="<?= $descrip ?>" name="descrip[]">
Проблема здесь в том, что визуализированный HTML выглядит как
<input type="text" value="16" Solid Steel Tube" name="descrip[]">
Обратите внимание на value
Атрибут теперь имеет конечную кавычку после "16"?
Вы должны закодировать свои значения для безопасного использования в HTML. Пытаться...
<input type="text" value="<?= htmlspecialchars($descrip) ?>" name="descrip[]">
Это будет отображаться как
<input type="text" value="16" Solid Steel Tube" name="descrip[]">
Ваш скрипт PHP будет по-прежнему получать его в виде некодированной строки при отправке.