|
|
|
| собсно сабж.. та же обыкновенная гэста на Мускуле... при обновлении информации введённой пользователем выдаётся вот такая ошибочка:
Ошибка! Не удалось обновить данные
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'А" - это означает переход в администраторское меню.при н
|
сначала думал что где то не хватает кавычки но всё переправерив отказался от этой мысли...
в чём на сей раз может быть трабла.. хотя всё таки помоему где то кавычки не хватает.. | |
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 12:18)
| | Если бы не природная скромность, я бы попросил показать сам запрос. Но так как я скромен, то я этого не сделаю. | |
|
|
|
|
|
|
|
для: Loki
(27.12.2005 в 12:37)
| | Локи ты как всегда в своём репертуаре :)) за что я и люблю этот форум :))
нет ну понятно что ошибочка может быть в запросе но может есть и другие причины - о который я и спрашиваю :))
лады - вот запрос... :
<?php
include 'config.php';
$query = "SELECT * FROM cms WHERE id_news='".$_GET['id_news']."'";
$query2 = "SELECT * FROM comments WHERE id_news='".$_GET['id_news']."' ORDER BY time DESC";
$ath = @mysql_query($query);
$ath2 = @mysql_query($query2);
$t1 = "<table cellspacing=0 cellpading=0 border=1 bordercolor=000000 width=400><tr><td><table cellspacing=0 cellpading=0 border=0>";
$t2 = "</td></tr><tr><td>";
$t3 = "</td></tr></table></td></tr></table>";
if($ath)
{
$news = mysql_fetch_array($ath);
echo '<form action=new_update.php method=post>';
echo ("$t1");
echo "№";
echo $news['id_news'];
echo ("<textarea ROWS=2 COLS=40 name=name_new>");
echo $news['name_new'];
echo ("</textarea>");
echo ("<br />");
echo $news['time'];
echo ("$t2");
echo ("<textarea ROWS=5 COLS=40 name=pred_new>");
echo $news['pred_new'];
echo ("</textarea>");
echo ("$t2");
echo ("<textarea ROWS=10 COLS=40 name=all_new>");
echo $news['all_new'];
echo ("</textarea>");
echo '<table cellspacing=0 cellpading=0 border=0><tr><td>';
echo '<input type=hidden name=id_news value='.$news['id_news'].'>';
echo '<input type=submit value="Обновить">';
echo '</form>';
echo '</td><td>';
echo '<form action=new_delete.php method=post>';
echo '<input type=hidden name=id_news value='.$news['id_news'].'>';
echo '<input type=submit value="Удалить">';
echo '</form>';
echo '</td></tr></table>';
echo '<a href=select_redact.php><small>Вернуться на страницу выбора редактирования</small></a>';
echo ("$t2");
echo ("$t3");
}
else
{
echo "<p><b>Error: ".mysql_error()."</b></p>";
exit();
}
?>
|
обработчик нужен? вот он :
<?php
include 'config.php';
$id_news = $_POST['id_news'];
$name_new = $_POST['name_new'];
$pred_new = $_POST['pred_new'];
$all_new = $_POST['all_new'];
$query = 'UPDATE cms SET id_news="'.$id_news.'", name_new="'.$name_new.'", pred_new="'.$pred_new.'", all_new="'.$all_new.'" WHERE id_news="'.$id_news.'"';
$ath = mysql_query($query);
if (!$ath)
{
echo 'Ошибка! Не удалось обновить данные';
echo "<p><b>Error: ".mysql_error()."</b></p>";
exit;
}
header ('location: select_redact.php');
?>
|
| |
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 12:44)
| | Выведите pls запрос в окно браузера
<?php
$query = 'UPDATE cms SET id_news="'.$id_news.'", name_new="'.$name_new.'", pred_new="'.$pred_new.'", all_new="'.$all_new.'" WHERE id_news="'.$id_news.'"';
echo $query;
?>
|
Как он выглядит, когда в него подставлены все значения... хотя скорее всего дело в том, что в одном из полей, где имеется двойная кавычка, которая нарушает всю логику запроса. Обычно перед добавлением текстовой информации в базу данных её прогоняют через функцию mysql_escape_string().
<?php
if (!get_magic_quotes_gpc())
{
$name_new = mysql_escape_string($name_new);
$pred_new = mysql_escape_string($pred_new);
$all_new = mysql_escape_string($all_new);
}
?>
|
это и SQL-инъекций пердотвращает. | |
|
|
|
|
|
|
|
для: cheops
(27.12.2005 в 13:13)
| | я выводил запрос в окно, там всё в порядке. да там много кавычек но тем не менее это не должно быть проблемой для скрипта...
а вот запрос с функцией mysql_escape_string(), его вводить в обработчик или в скрипт передачи данных? по идее без разницы особой... | |
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 13:22)
| | В обработчик - пока данные передаются - вам их 100 раз подделать успеют, злоумышленики работают напрямую с обработчиком. | |
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 12:44)
| | попробуйте так:
<?
$query = "UPDATE cms SET id_news='$id_news', name_new='$name_new', pred_new='$pred_new', all_new='$all_new' WHERE id_news='$id_news'";
?>
|
| |
|
|
|
|
|
|
|
для: Loki
(27.12.2005 в 13:24)
| | смысла нет я подставил функцию Хеопса и всё заработало... ох уж эти кавычки :))
спасибо всем!
а можно поподробнее про эту функцию узнать!? | |
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 13:48)
| | Об этой функции можно почитать в справочнике функций http://www.softtime.ru/dic/id_dic=96&id_group=2 - она экранирует спец-символы и предназначена в основном для решения именно той проблы, которая возникла у вас со строками. | |
|
|
|
|
|
|
|
|
для: 10100100
(27.12.2005 в 12:18)
| | всем спасибо - вопросов больше не имею... | |
|
|
|