Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: ошибочку выдаёт при обновлении информации.
 
 автор: 10100100   (27.12.2005 в 12:18)   письмо автору
 
 

собсно сабж.. та же обыкновенная гэста на Мускуле... при обновлении информации введённой пользователем выдаётся вот такая ошибочка:


Ошибка! Не удалось обновить данные
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 'А" - это означает переход в администраторское меню.при н


сначала думал что где то не хватает кавычки но всё переправерив отказался от этой мысли...
в чём на сей раз может быть трабла.. хотя всё таки помоему где то кавычки не хватает..

   
 
 автор: Loki   (27.12.2005 в 12:37)   письмо автору
 
   для: 10100100   (27.12.2005 в 12:18)
 

Если бы не природная скромность, я бы попросил показать сам запрос. Но так как я скромен, то я этого не сделаю.

   
 
 автор: 10100100   (27.12.2005 в 12:44)   письмо автору
 
   для: 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');
?> 

   
 
 автор: cheops   (27.12.2005 в 13:13)   письмо автору
 
   для: 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-инъекций пердотвращает.

   
 
 автор: 10100100   (27.12.2005 в 13:22)   письмо автору
 
   для: cheops   (27.12.2005 в 13:13)
 

я выводил запрос в окно, там всё в порядке. да там много кавычек но тем не менее это не должно быть проблемой для скрипта...

а вот запрос с функцией mysql_escape_string(), его вводить в обработчик или в скрипт передачи данных? по идее без разницы особой...

   
 
 автор: cheops   (27.12.2005 в 13:52)   письмо автору
 
   для: 10100100   (27.12.2005 в 13:22)
 

В обработчик - пока данные передаются - вам их 100 раз подделать успеют, злоумышленики работают напрямую с обработчиком.

   
 
 автор: Loki   (27.12.2005 в 13:24)   письмо автору
 
   для: 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'"
?>

   
 
 автор: 10100100   (27.12.2005 в 13:48)   письмо автору
 
   для: Loki   (27.12.2005 в 13:24)
 

смысла нет я подставил функцию Хеопса и всё заработало... ох уж эти кавычки :))
спасибо всем!
а можно поподробнее про эту функцию узнать!?

   
 
 автор: cheops   (27.12.2005 в 13:55)   письмо автору
 
   для: 10100100   (27.12.2005 в 13:48)
 

Об этой функции можно почитать в справочнике функций http://www.softtime.ru/dic/id_dic=96&id_group=2 - она экранирует спец-символы и предназначена в основном для решения именно той проблы, которая возникла у вас со строками.

   
 
 автор: Loki   (27.12.2005 в 14:00)   письмо автору
 
   для: 10100100   (27.12.2005 в 13:48)
 

-

http://www.softtime.ru/dic/id_dic=96&id_group=2

   
 
 автор: 10100100   (27.12.2005 в 14:10)   письмо автору
 
   для: 10100100   (27.12.2005 в 12:18)
 

всем спасибо - вопросов больше не имею...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования