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

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"
 

Фанат

oncle terrible
Команда форума
найди в коде строчку, которая выводит "Incorrect table name", и посмотри, что она делает.

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

FreeWolf

Новичок
PHP:
$query = "UPDATE `".$table."` SET `namestate`='".$namestate."', `topic`='".$topic."', `avtor`='".$avtor."' ,`text`='".$text."' WHERE `nomer`=".$update;
Попробуй так

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

Пусть будет так( большинство так начинает), как один раз взломают в следующий раз подумает где косяк
 

radioheaded

PHP нуб
Дело не в таблице, а в том, что в первом варианте значения заключаются в кавычки, как и должно быть, а во втором нет.
 

Baton

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

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

twenty6

Новичок
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
 

Baton

Новичок
Мне кажется что ошибку тебе даёт совсем не этот кусок кода.
 

radioheaded

PHP нуб
Вы вообще читаете, что вам пишут? Или просто хотите, чтобы за вас все сделали, не разбираясь ни в чем?

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

twenty6

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

Еще раз, поместите значения в одинарные кавычки. Все значения, включая значение поля 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'';

Ни одна не работает!
 

twenty6

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

Фанат

oncle terrible
Команда форума
twenty6
научись читать по-русски.
без этого твое обращение за помощью будет пустой тратой времени.

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

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

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