php var value содержит кавычки - PullRequest
       47

php var value содержит кавычки

0 голосов
/ 08 ноября 2011

Итак ... У меня есть mysql_fetch_array, и я сталкиваюсь с проблемой, когда некоторые из данных mysql содержат одинарные или двойные кавычки.Это глупая версия моего кода:

while($row=mysql_fetch_array($list)) {
    echo "<tr>";
    echo "<td onclick='edit_form(\"" . $row['item'] . "\");'>" . $row['item'];
    echo "</td></tr>";
    }

Функция edit_form () используется для отправки значения текущего элемента обратно к значению ввода в форме, чтобы пользователь мог затем легкоотредактируйте их запись и затем отправьте команду UPDATE в mysql вместе с соответствующим идентификатором первичного ключа (который я пропустил из-за неактуальности).Единственная проблема, с которой я сталкиваюсь, это то, что если пользователь помещает в форму одинарные или двойные кавычки, он портит атрибут onclick.Пожалуйста помоги!!Я довольно новичок в php и не могу понять это.Я возился с htmlentites () и html_entity_decode (), но до сих пор не могу найти.Большое вам спасибо!

Ответы [ 4 ]

2 голосов
/ 08 ноября 2011

Используйте htmlspecialchars на $row['item'] перед тем, как вставить его в документ.

Таким образом, ваш "тупой" код должен быть:

while($row=mysql_fetch_array($list)) { 
    $item = htmlspecialchars($row['item']);
    echo "<tr>"; 
    echo "<td onclick='edit_form(\"" . $item . "\");'>" . $item;
    echo "</td></tr>"; 
} 
0 голосов
/ 09 ноября 2011

Я просто помещаю значения обратно в мой <form> (когда они нажимают на <td>), и когда они нажимают SUBMIT, он направляет данные в другой файл .php, который использует MySQL UPDATE вместо INSERT.,Наконец-то я нашел код, который работает!

  • $list - это mysql_query Я пробежал вверху документа
  • $item - название одногоиз моих столбцов в MySQL

    while($row=mysql_fetch_array($list)){
        $item = json_encode($row['item']);
        $item = str_replace("'","&#39;",$item);
        echo "<td onclick='edit_form(" . $item . ");'>" . $row['item'] . "</td>";
    }
    

Теперь он отображается правильно в <form> при нажатии <td> (по jQuery input.val($item)) и правильно отображается в таблицечерез $row['item'].Я не совсем понимаю, как это работает (как кодирование делает это работает), но я рад, что это так.Crazyness !!!!Спасибо за ответ!и спасибо за ваши усилия !!

0 голосов
/ 08 ноября 2011

Попробуйте строку ниже вместо оригинала в вашем коде и посмотрите, работает ли он:

echo "<td onclick='edit_form(\"" . str_replace('"',"&quote;",$row['item']) . "\");\">" . $row['item'];

И там, где вы хотели бы отобразить поле $ item, просто замените его в обратном порядке, если получите "е; вместо «».Например:

$qoute_free= str_replace('&quote','"',$passed_value);

Если вы используете его в javascript, функция может быть такой:

function edit_form(passed_value)
{
  new_value=passed_value.replace(/&quote;/g,'"');
}
0 голосов
/ 08 ноября 2011

Я советую использовать json_encode.Таким образом, вам не нужно беспокоиться об особых случаях, которые могут пропустить htmlspecialchars (например, переводы строки).

...