[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблема с выводом ", '
Rumata
Добрый день, помогите новичку, проблема с символами " и ' .

привожу часть кода

выводится список значение из БД, которые нужно редактировать

$result=mysql_query("SELECT `answer`, `id`
FROM `poll_answers`"
)
or die ("Could'n create a table: ".mysql_error());

while ($myrow=mysql_fetch_assoc($result))
{
$id=mygetcod((float)$myrow['id']);
echo '<tr> <td> '.htmlspecialchars($myrow['answer']).'</td>
<td> <a href=answer_del.php?id='
.$id.'>Delete</a> </td>
<td> <a href=answer_edit.php?id='
.$id.'>Edit</a> </td>
</tr>'
;
}



Вывожу выбранное поле по ссылке и редактирую
=========================================================

if (isset($_GET['id']))
$id=mygetdecod($_GET['id']);
$result=mysql_query("SELECT `answer`, `id`
FROM `poll_answers`
WHERE id="
.(float)$id, $db)
or die ("Could'n select a table: ".mysql_error());
if ($result)
$myrow=mysql_fetch_assoc($result);

<
form name="CangeAnswer" action="answer_edit_act.php" method="post">
<
input value="<?php echo htmlspecialchars($myrow['answer']) ?>" type="text" name="answer" size="30">
<
input value="<?php echo htmlspecialchars($myrow['id']) ?>" type="hidden" name="id">
<
input type="submit" value="Apply">
</
form>
</
p>


непосредственное изменение.
========================================================
if (isset($_POST['id']) & isset($_POST['answer']))
$answer=htmlspecialchars($_POST['answer']);
$id=htmlspecialchars($_POST['id']);
$result=mysql_query("UPDATE `poll_answers`
SET `answer`='
$answer'
WHERE id="
.(int)$id, $db)
or die ("Could'n update a table: ".mysql_error());




Все работает но проблемы возникает когда я набираю в форме редактирования символ " или ' в первом случае вместо " выводится &quot; во втором случае выдает ошибку. Подскажите с этим бороться? Кодировка charset=utf-8;





Спустя 16 минут, 48 секунд (16.01.2012 - 16:41) imbalance_hero написал(а):
`answer`='".mysql_real_escape_string($answer)."'

Спустя 32 секунды (16.01.2012 - 16:41) killer8080 написал(а):
Цитата (Rumata @ 16.01.2012 - 15:24)
Все работает но проблемы возникает когда я набираю в форме редактирования символ " или ' в первом случае вместо " выводится &quot; во втором случае выдает ошибку.

Не правильная обработка входных данных. Нужно прогонять не через htmlspecialchars(), а через mysql_real_escape_string()
if (isset($_POST['id']) && isset($_POST['answer']))
$answer=mysql_real_escape_string($_POST['answer']);
$id=$_POST['id']; // числовые значения обрабатывать не нужно, достаточно приведения типов
$result=mysql_query("UPDATE `poll_answers`
SET `answer`='
$answer'
WHERE id="
.(int)$id, $db)
or die ("Could'n update a table: ".mysql_error());


Ещё одна ошибка, нужно использовать логический оператор && , а не битовый &

PS Rumata знакомый ник :)
Не с crimea-board часом?

Спустя 43 минуты, 19 секунд (16.01.2012 - 17:24) Rumata написал(а):
Спасибо, все работает.

Цитата
PS Rumata знакомый ник smile.gif
Не с crimea-board часом?


из миров Стругацких. smile.gif


Спустя 2 минуты, 41 секунда (16.01.2012 - 17:27) killer8080 написал(а):
Цитата (Rumata @ 16.01.2012 - 16:24)
из миров Стругацких.

Пардон, обознался smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.