Хорошо, эхо строки MySQL, за исключением случаев, когда возвращается значение ввода текста

Поэтому у меня есть небольшая проблема с апострофами в MySQL при возврате строк в текстовые поля, чтобы они могли быть отредактированы.

Проблема заключается в том, что строки, содержащие апостроф (‘) в строке столбца, echo штраф как текст на странице, но когда отображается как значение текстового поля, строка обрезается в апострофе и заканчивается косой чертой.

Я удалил косую черту, используя stripslashes($nam) с $nam будучи переменной, я загружаю свой столбец Имя в использование mysqli_fetch_assoc, Но остальная часть строки по-прежнему не возвращается.

Опять же, при отражении на странице, которая перечисляет все строки, проблем нет, полная строка выводится в порядке, с апострофами и без добавленных слешей.

Это когда строка отображается на странице:
Это когда строка отображается на странице

Это когда строка отображается как значение текстового поля:
Это когда строка отображается как значение текстового поля

В инструментах разработчика Chrome я вижу, что апостроф закрывает value тег слишком рано, а остальная часть строки обрабатывается как свойство HTML.
Инструменты разработчика Chrome

Итак, как я могу предотвратить это, в настоящее время мой код (очень урезанная версия, чтобы не заполнять страницу бессмысленным несвязанным кодом), который я использую для отображения:

while($row = mysqli_fetch_assoc($result)):
$nam = $row["Name"];
$nam = mysqli_real_escape_string($mysqli, $nam);
$nam = mysqli_real_escape_string($mysqli, $nam);
echo "<label for='Name'>Name</label></td>
<td><input type='text' name='Name' id='Name' placeholder='Item Name' value='".$nam."' required></td>";
endwhile;

-1

Решение

Поэтому я начал набирать этот вопрос и подумал: «Я лучше попробую это, прежде чем публиковать сообщения, потому что в противном случае это могло бы выглядеть очень плохо, если это было бы простым решением».

Оказалось, я был прав. Тем не менее, я еще опубликую этот вопрос, чтобы начинающие люди могли извлечь уроки из этого, поскольку это что-то очень простое, и отчасти потому, что я уже напечатал вопрос.

Ответ:

Ранее я использовал кавычки " инкапсулировать то, что я хотел отразить, и апострофы ' чтобы установить значения, поэтому в этом случае мой код был:

echo "<input type='text' name='Name' id='Name' placeholder='Item Name' value='".$nam."' required>";

Ключевым моментом, на который стоит обратить внимание, является код: value='".$nam."',

Поскольку строка возвращала апостроф, я предполагаю, что PHP распознал этот апостроф как конец value и короткую строку, отсюда и странный исходный код Chrome Developer Tools, включающий остальную часть моей строки, без апострофа.

Чтобы это исправить, я просто изменил апострофы на кавычки и избежал их, используя обратную косую черту \, Для тех, кто не знает, экранирование выполняется путем добавления обратной косой черты перед тем персонажем, которому нужно убежать, и это удаляет все специальные способности этого персонажа. Если бы я не избежал кавычки, то кавычка закончила бы мою echo и оставил меня с синтаксической ошибкой. Избегая этого, я говорю PHP, что кавычка является частью HTML, который я хочу echo а не конец echo,

Итак, мой новый код сейчас:

echo "<input type='text' name='Name' id='Name' placeholder='Item Name' value=\"".$nam."\" required>";

Итак, урок, который я усвоил: не пытайтесь избежать кавычек, просто используя их для инкапсуляции вашего echo,

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]