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 » » Если скрипт не работает » не могу вставить переменную в запрос.

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

1. jeck111 - 16 Июня, 2011 - 15:53:57 - перейти к сообщению
Здравствуйте уважаемые.
Пытаюсь реализовать автодополнение.
Использую MySQL. Есть вот такой запрос
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT `fio` FROM `staff` WHERE `fio` LIKE '".$inputString."%'"

Который ничего не выдает.
Но зато вот такой запрос возвращает то что мне нужно (список имен начинающихся на "Ко")
CODE (SQL):
скопировать код в буфер обмена
  1. "SELECT `fio` FROM `staff` WHERE `fio` LIKE 'Ко%'"

И точно знаю что в $inputstring Ко, а все равно ничего не возвращает. Вроде все просто, но все же не могу понять. Подскажите пожалуйста где может быть собака зарыта?
2. morosit - 16 Июня, 2011 - 16:01:58 - перейти к сообщению
подозреваю что собака порылась в кавычках
3. IllusionMH - 16 Июня, 2011 - 16:08:02 - перейти к сообщению
jeck111, возможнно простой
PHP:
скопировать код в буфер обмена
  1. echo "SELECT 'fio' FROM 'staff' WHERE 'fio' LIKE '".$inputString."%'";

прольет свет на вашу проблему.
4. Мелкий - 16 Июня, 2011 - 16:08:18 - перейти к сообщению
Основы дебага, сделайте:
PHP:
скопировать код в буфер обмена
  1. echo "SELECT `fio` FROM `staff` WHERE `fio` LIKE '".$inputString."%'";


Наиболее вероятная причина - несоответствие кодировки mysql и того, что вы отправляете.
5. jeck111 - 16 Июня, 2011 - 16:09:17 - перейти к сообщению
morosit пишет:
подозреваю что собака порылась в кавычках

в каких? пробовал наверное уже в разных вариантах с этими кавычками.
Предоставь свой вариант правильного расположения кавычек пожалуйста.
6. IllusionMH - 16 Июня, 2011 - 16:16:44 - перейти к сообщению
jeck111, попробуй вариант кода, который я выложил выше. Там кавычки одинаковые.
В твоем примере есть разница(по крайней мере визуальная) между одинарными кавычками в запросе (fio, staff) и теми, которые обрамляют переменную.
7. jeck111 - 16 Июня, 2011 - 16:22:56 - перейти к сообщению
Блин реально помог эти простые основы дебага.
Оказалось что LIKE приводит все буквы к нижнему регистру, а фамилии то с больших начинаются.
А самое главное что я ж всегда видел что буквы то в переменной строчные, просто не придавал этому значения. А когда весь запрос целиком увидел, то бросилось в глаза.
Всем спасибо проблема решена.
(Добавление)
IllusionMH пишет:
jeck111, попробуй вариант кода, который я выложил выше. Там кавычки одинаковые.
В твоем примере есть разница(по крайней мере визуальная) между одинарными кавычками в запросе (fio, staff) и теми, которые обрамляют переменную.


Разница действительно есть, где-то читал что это хороший тон в запросах имена таблиц и столбцов обрамлять обратными кавычками (те что на Ё Улыбка).
8. yaroslav1189 - 18 Сентября, 2012 - 10:55:22 - перейти к сообщению
Доброго времени суток. У меня такой вопрос. В цикле генерится запрос к БД.
PHP:
скопировать код в буфер обмена
  1.  
  2. $tab_name='rion_'.$r1;
  3. $qwery = "SELECT * FROM ".$tab_name." WHERE ned_id=".$period." ORDER BY id";
  4. $r_ri=mysql_query($qwery,$db);                
  5. $m_ri=mysql_fetch_array($r_ri);
  6.  

$r1, $period - число типа интежер
На локальной машине все работает, а при заливке скрипта на сервер выдается ошибка, что мол запрос не может быть выполнен. Причем, если ввести в майадмине на сервере запрос, который сгенерировал скрипт, то он выполняется. В чем может быть дело?...

 

Powered by ExBB FM 1.0 RC1