Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Unknown column 'xxx' in 'field list'
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Unknown column 'xxx' in 'field list'

Страниц (1): [1]
 

1. Axiles - 02 Августа, 2010 - 12:19:05 - перейти к сообщению
Драсте.
Из формы методом POST передаю в скрипт данные.
В скрипте их принимаю
PHP:
скопировать код в буфер обмена
  1.  
  2. $namePOST = $_POST ['name'];
  3.  

записываю в базу sql
PHP:
скопировать код в буфер обмена
  1.  
  2.  mysql_query(" UPDATE `bd` SET `name` = $namePOST[0] WHERE `npp` = 0")or die (mysql_error());
  3.  

если данные это цифры то всё нормально записывается, если же текст то выдаёт ошыбку Unknown column 'xxx' in 'field list'

нипайму пачему Огорчение
хотя работало, что изменилось тоже не пойму Огорчение
2. EuGen - 02 Августа, 2010 - 12:36:57 - перейти к сообщению
Посмотрите генерируемый текст запроса и сравните его со структурой таблицы. Возможно, последняя изменилась (если Вы утверждаете, что запрос не менялся)
3. Axiles - 02 Августа, 2010 - 12:50:20 - перейти к сообщению
я так понял что он неможет найти такую колонку, но цифры то он пишет в неё, а буквы не хочет (
а в структуре таблицы что я увижу?
имя правильное, тип текст, что ещё?
4. RomAndry - 02 Августа, 2010 - 12:52:30 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. mysql_query('UPDATE `bd` SET `name` = "'.$namePOST[0].'" WHERE `npp` = 0')or die (mysql_error());
5. SAD - 02 Августа, 2010 - 12:52:55 - перейти к сообщению
блин, в кавычки возьми текст заносимый
6. JustUserR - 03 Августа, 2010 - 03:27:20 - перейти к сообщению
Axiles В начале для осуществления диагностики действительно следует посмотреть сгенерированный SQL-запрос с учетом интерполированных переменных - в исходном HTML-коде генерируемой HTML-страницы При этом интерполируемые данные не только должны быть заключены к кавычки внутри SQL-запроса - но и предварительно проэкранированы с уровнем на единицу большим чем реальная передаваемая строкова SQL-запроса соответственно - а иначе PHP-скрипт будет подвержен возможный SQL-инъекции
7. Axiles - 03 Августа, 2010 - 05:11:21 - перейти к сообщению
RomAndry пишет:
mysql_query('UPDATE `bd` SET `name` = "'.$namePOST[0].'" WHERE `npp` = 0')or die (mysql_error());

в таком виде ошибку не выдаёт.
я так понял что таким образом оформленный запрос не производит запись в бд, тоесть необходим для теста о чё и говорит JustUserR , я правильно понял?
А вот это не понял "Посмотрите генерируемый текст запроса ", как это сделать?
8. SAD - 03 Августа, 2010 - 09:20:06 - перейти к сообщению
echo 'UPDATE `bd` SET `name` = "'.$namePOST[0].'" WHERE `npp` = 0';
9. Axiles - 03 Августа, 2010 - 10:26:28 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2.  echo "<br>";
  3.  echo $namePOST[$nppPOSTvalue];
  4.  echo "<br>";
  5.  echo 'UPDATE `bd` SET `name` = "'.$namePOST[$nppPOSTvalue].'" WHERE `npp` = 0';
  6.          echo "<br>";
  7.  mysql_query(" UPDATE `bd` SET `name`= $namePOST[$nppPOSTvalue] WHERE `npp` = 1")or die (mysql_error());
  8.  


результат

Цитата:

456
UPDATE `bd` SET `name` = "456" WHERE `npp` = 0

hhh
UPDATE `bd` SET `name` = "hhh" WHERE `npp` = 0
Unknown column 'hhh' in 'field list'
10. SAD - 03 Августа, 2010 - 10:34:33 - перейти к сообщению
mysql_query("UPDATE `bd` SET `name`= '$namePOST[$nppPOSTvalue]' WHERE `npp` = 1")
11. Axiles - 03 Августа, 2010 - 13:42:40 - перейти к сообщению
SAD пишет:
mysql_query("UPDATE `bd` SET `name`= '$namePOST[$nppPOSTvalue]' WHERE `npp` = 1")


воооооо блин, обязательно надо носом натыкать чтобы увидеть то что у тебя перед этим самым носом
огромное спасибо!
12. JustUserR - 04 Августа, 2010 - 16:54:38 - перейти к сообщению
Axiles пишет:
Я так понял что таким образом оформленный запрос не производит запись в бд, тоесть необходим для теста о чё и говорит JustUserR , я правильно понял?
Как видите осуществление диагностики в вашем случае сразу бы указало причину ошибки - только конечно при осуществлении вывода необходимо чтобы диагностируемое выражение в точности соответствовало и находилось в аналогичкой области видимости - как и то которое используется в реальном действии в PHP-скрипте
Axiles пишет:
А вот это не понял "Посмотрите генерируемый текст запроса ", как это сделать?
Имелось в виду что нужно смотреть не сам текст на странице в браузере а ее исходный HTML-код - для того чтобы текст был виден именно в том виде в каком он используется внутри операций в PHP-скрипте Можно использовать и более удобное средство отладки - например интерактивный debugger с названием PHPEd

 

Powered by ExBB FM 1.0 RC1