Проблема с UPDATE в mysql

  • Автор темы Автор темы twenty6
  • Дата начала Дата начала

twenty6

Новичок
Суть в том что нужно занести данные в определённую таблицу mysql
В php файле $table="pcnews";
B и всё работает прекрасно, НО когда я хочу с помощью переменной $table=$_POST['table'];
занести данные в mysql выводит ошибку: Incorrect table name ''

Код до изменения: (рабочий)
$table = "pcnews";
$query = "UPDATE $table SET namestate='$namestate', topic='$topic', avtor='$avtor' ,text='$text' WHERE nomer='$update'";


Код после изменения: (с ошибкой)
$table = $_POST['table'];
$query = "UPDATE ".$table." SET namestate=".$namestate.", topic=".$topic.", avtor=".$avtor." ,text=".$text." WHERE nomer=".$update." ";

Переменная $_POST['table'] и $update - исправны



var_dump($_POST['table']); >>> pcnewsstring(6) "pcnews"
 
найди в коде строчку, которая выводит "Incorrect table name", и посмотри, что она делает.

P.S. Про SQL инъекции ты, конечно же, никогда не слышал?
 
PHP:
$query = "UPDATE `".$table."` SET `namestate`='".$namestate."', `topic`='".$topic."', `avtor`='".$avtor."' ,`text`='".$text."' WHERE `nomer`=".$update;
Попробуй так

P.S. Про SQL инъекции ты, конечно же, никогда не слышал?
А что это? А зачем это?

Пусть будет так( большинство так начинает), как один раз взломают в следующий раз подумает где косяк
 
Дело не в таблице, а в том, что в первом варианте значения заключаются в кавычки, как и должно быть, а во втором нет.
 
twenty6
Может Вы дадите нам сам запрос который не работает. В коде ошибок не замечено.

PS: запрос после подстановки значений.
 
twenty6
Может Вы дадите нам сам запрос который не работает. В коде ошибок не замечено.

PS: запрос после подстановки значений.

if(@$submit_edit) {
$query = "UPDATE `".$table."` SET `namestate`='".$namestate."', `topic`='".$topic."', `avtor`='".$avtor."' ,`text`='".$text."' WHERE `nomer`=".$update."";
mysql_query($query) or die (mysql_error());
}

только что с помощью echo проверил $table $update
ошибка - 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 '' at line 1
 
Мне кажется что ошибку тебе даёт совсем не этот кусок кода.
 
Вы вообще читаете, что вам пишут? Или просто хотите, чтобы за вас все сделали, не разбираясь ни в чем?

Еще раз, поместите значения в одинарные кавычки. Все значения, включая значение поля nomer в клозе WHERE.
 
Вы вообще читаете, что вам пишут? Или просто хотите, чтобы за вас все сделали, не разбираясь ни в чем?

Еще раз, поместите значения в одинарные кавычки. Все значения, включая значение поля nomer в клозе WHERE.

Вот так ? $query = 'UPDATE '.$table.' SET `namestate`='.$namestate.', `topic`='.$topic.', `avtor`='.$avtor.' ,`text`='.$text.' WHERE `nomer`='.$update.' ';
Может так? $query = 'UPDATE '$table' SET `namestate`='$namestate', `topic`='$topic', `avtor`='$avtor' ,`text`='$text' WHERE `nomer`='$update'';

Ни одна не работает!
 
ВЕСЬ ПАРАДОКС В ТОМ ЧТО РАБОТАЕТ(данные обновляются) ВОТ ТАК: НО ПИШЕТ ОШИБКУ!
$query = 'UPDATE '.$table.' SET `namestate`="'.$namestate.'", `topic`="'.$topic.'", `avtor`="'.$avtor.'" ,`text`="'.$text.'" WHERE `nomer`="'.$update.'"';
 
twenty6
научись читать по-русски.
без этого твое обращение за помощью будет пустой тратой времени.

Тебе сказали две вещи:
1. Написать запрос, который уходит в базу. Не каракули РНР, которые его формируют, а сам запрос, который уходит в БД.
2. возможно, ошибка происходит в другом месте.

Для этого вместо тупого die (mysql_error()); надо написать
PHP:
trigger_error (mysql_error()." ".$query);
и посмотреть имя файла и номер строки, на которой происходит ошибка. сравнить с теми, где ты её ищешь.
плюс весь вывод этой функции скопировать сюда.

Постарайся осилить эти нехитрые рекомендации.
 
Сверху