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

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: mysql_query не работает с переменными.

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
p33t
Отправлено: 06 Января, 2015 - 11:45:35
Post Id


Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Привет всем обитателям этого умного места.

Вопрос в том, что если вставляю переменную в строку запроса - выкидывает FALSE
Вот код для наглядности:

PHP:
скопировать код в буфер обмена
  1. $get = rtrim($get, ",&nbsp");
  2.  
  3. $select = "SELECT $get FROM store WHERE id=6";
  4. //var_dump($select) - SELECT `title`, `isbn-sn`, `issue_date`, `author`, `publisher`, `description`, `content`, `price` FROM store WHERE id=6
  5.  
  6. $row = mysql_query($select, $this->connect);
  7. $result = mysql_fetch_array($row, MYSQL_NUM);


Строка запроса собирается несколькими методами, но в итоге, содержание вроде бы в порядке...???
Пробовал подставить $get = "title, isbn-sn,........";
И все работает.
Так же пробовал экранировать вот так:

Но без результата.

Что не так, Подскажите пожалста...
Спасибо.
 
 Top
esterio
Отправлено: 06 Января, 2015 - 11:57:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




mysql_real_escape_string экранирует всю строку. у вас получиться что-то вроде такого
Цитата:
\`title\`, \`isbn-sn\`, \`issue_date\`

а это уже не подходит
 
 Top
DelphinPRO
Отправлено: 06 Января, 2015 - 11:58:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Добавь строчку, чтобы увидеть сообщение ошибки, которое выдает база.
PHP:
скопировать код в буфер обмена
  1. $row = mysql_query($select, $this->connect);
  2. if (!$row) die(mysql_error());


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
p33t
Отправлено: 06 Января, 2015 - 12:35:28
Post Id


Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




esterio пишет:
а это уже не подходит

Я пробовал и без `` то есть и экранировать там было не чего. Но все равно не работает.

DelphinPRO пишет:
Добавь строчку, чтобы увидеть сообщение ошибки, которое выдает база.

Вставил и вот что выдает:
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 ' `isbn-sn`, `issue_date`, `author`, `publisher`, `descriptio' at line 1

Но где там ошибка синтекса .???

Еще один вопрос!!!
Где то прочитал, что просто вставлять переменные в sql запрос, не рекомендуют. На сколько я понял, дело лишь в БЕЗОПАСНОСТЬ.
Так ли это ???
(Добавление)
Не работает.... Нахмурился
Пробовал скопировать var_dump($select) с браузера, вставить в консоль phpMyAdmin, и все работает...

А из файла - ошибит...
 
 Top
Мелкий Супермодератор
Отправлено: 06 Января, 2015 - 13:20:05
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




p33t пишет:
$get = rtrim($get, ",&nbsp");

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

p33t пишет:
Где то прочитал, что просто вставлять переменные в sql запрос, не рекомендуют.

Данные вставлять в запрос нельзя. В принципе нельзя.
Строить сам запрос динамически - никак кроме как конкатенацией строк просто не получится.


-----
PostgreSQL DBA
 
 Top
p33t
Отправлено: 06 Января, 2015 - 13:44:03
Post Id


Новичок


Покинул форум
Сообщений всего: 40
Дата рег-ции: Окт. 2014  


Помог: 0 раз(а)




Все, разобрался...

Мелкий пишет:
Во-первых, вторым аргументом указывается список символов. У вас символы явно упорядочены, что похоже на логическую ошибку.
Во-вторых, вот этот вот &nbsp наводит на мысль, что и в запросе написана какая-то глупость в том же духе.

Дело в том, что когда я вставлял вторым аргументом "," ни чего не менялось. А мне надо было убрать последнюю запятую из строки. Вот так я и выкрутился. С &nbsp все сработало.

Но пытался с помощью конкатенации составить строку запроса из элементов массива.
Да, звучит как то глупо Хм
Но все работало когда в массиве был один элемент.
И сама строка вроде как OK. В браузере строка выглядела как надо. Но вот в запросе выдает ошибку.
Я взял все запихал в массив, implode'нуллл его и все заработало.

Всем спасибо за помощь.
Вопрос исчерпан. Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB