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&quot; Solid Steel Tube" name="descrip[]">

Ваш скрипт PHP будет по-прежнему получать его в виде некодированной строки при отправке.

Другие вопросы по тегам