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 :: Версия для печати :: Загрузить в БД переменную
Форумы портала PHP.SU » PHP » Программирование на PHP » Загрузить в БД переменную

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

1. Budulianin - 19 Декабря, 2010 - 14:24:16 - перейти к сообщению
Всем привет. Мне нужно загрузить склеенную строку в БД, но она не записывается

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $Dannie = $html->find('table [class="service_01"]');
  4.  
  5. $Danniestr = implode('  ', $Dannie);
  6.  
  7.  
  8.  
  9. mysql_query("UPDATE `tarifi` SET `dannietar` = $Danniestr  WHERE `id` = 1 ");
  10.  
  11. $q1 = mysql_query("SELECT `dannietar` FROM `tarifi` WHERE `id` = 1 ");
  12.  
  13. $ss = mysql_fetch_array($q1, MYSQL_ASSOC);
  14.  
  15. echo $ss['dannietar'];
  16.  
  17.  
  18.  


Поле в БД типо LONGTEXT после работы скрипта оно пустое, почему содержимое переменной не сохраняется в БД??
2. Uchkuma - 19 Декабря, 2010 - 14:28:58 - перейти к сообщению
Budulianin пишет:
почему содержимое переменной не сохраняется в БД?
Что содержится в этой переменной?
3. Champion - 19 Декабря, 2010 - 14:29:05 - перейти к сообщению
Потому что строки пишутся в кавычках.
4. Budulianin - 19 Декабря, 2010 - 14:36:04 - перейти к сообщению
Uchkuma пишет:
Budulianin пишет:
почему содержимое переменной не сохраняется в БД?
Что содержится в этой переменной?


Это переменная содержит напарсенный код

Сначала я массив получаю с этим кодом в каждом элементе массива table с классом service_01

потом склеиваю массив в строку ( в итоге я думаю получается строка с текстом, после того как я склеил массив )
5. OrmaJever - 19 Декабря, 2010 - 14:38:01 - перейти к сообщению
напишите перед запросом var_dump($Danniestr)
а после запроса echo mysql_error()
6. Uchkuma - 19 Декабря, 2010 - 14:39:21 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. $Danniestr = mysql_real_escape_string(implode('  ', $Dannie));
  2. mysql_query("UPDATE `tarifi` SET `dannietar` = '$Danniestr'  WHERE `id` = 1 ");
7. Budulianin - 19 Декабря, 2010 - 14:43:31 - перейти к сообщению
OrmaJever пишет:
напишите перед запросом var_dump($Danniestr)
а после запроса echo mysql_error()


вот что выводит после всего выведенного с помощью VAR_DUMP

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
(Добавление)
Uchkuma пишет:
PHP:
скопировать код в буфер обмена
  1. $Danniestr = mysql_real_escape_string(implode('  ', $Dannie));
  2. mysql_query("UPDATE `tarifi` SET `dannietar` = '$Danniestr'  WHERE `id` = 1 ");


То что ты написал помогло

А в чем было дело?

mysql_real_escape_string - преобразовывает в другой вид данных ?

mysql_real_escape_string -- Экранирует специальные символы в строке, используемой в SQL-запросе, принмимая во внимание кодировку соединения.

А у меня была в чем проблема? в кодировке?
8. Ammy - 19 Декабря, 2010 - 15:01:03 - перейти к сообщению
Champion пишет:
Потому что строки пишутся в кавычках.
9. Budulianin - 19 Декабря, 2010 - 15:09:08 - перейти к сообщению
Ammy пишет:
Champion пишет:
Потому что строки пишутся в кавычках.


ААААААА........


Всмысле сам текст который я передаю в БД ?

Я думал при склеивании массива функцией implode содержимое автоматически становится строкой или я не прав?


Спасибо всем большое за ответы они очень помогли и главное быстро =) и выручили меня
10. Мелкий - 19 Декабря, 2010 - 15:44:17 - перейти к сообщению
Budulianin пишет:
Я думал при склеивании массива функцией implode содержимое автоматически становится строкой или я не прав?

Становится. Но для PHP. А SQL не может распарсить, где кончается строка и начинаются команды, поэтому там строки надо в дополнительные кавычки сажать.

 

Powered by ExBB FM 1.0 RC1