Что не так в этом простом предложении PHP SQL? - PullRequest
0 голосов
/ 12 декабря 2010

я хочу пометить всех пользователей с именем "blo" в их полном имени, например: "Pablo"

Я передаю параметр "blo" с user параметром PHP:

$q=mysql_query("select * From user Where fullName Like '%'".$_REQUEST['user']."'%'",$link );

что-то не так в предложении php SQL, потому что, когда я пытаюсь использовать предложение с аргументом "blo" в моей базе данных SQL, я вижу, что предложение SQL правильное, потому что оно возвращает мне правильный результат, это предложениес аргументом "blo" на нем: select * From user Where fullName Like "%blo%"

Я уверен, что PHP правильно получает параметр "blo", то это должно быть синтаксическая ошибка предложения SQL на PHP.... но я не могу найти это

РЕДАКТИРОВАТЬ: ОК!последнее предложение решено, но теперь у меня есть новое предложение с той же проблемой, в нем есть ошибка, но я не знаю, где

$query = sprintf("SELECT u.* 
                    FROM USER u
                   WHERE u.fullName LIKE '%%%s%%' AND email NOT IN (select pp.fk_email2 from permission pp where pp.fk_email1='".mysql_escape($_REQUEST['mymail'])."') AND email NOT LIKE  '".mysql_escape($_REQUEST['mymail'])."' ",
                  mysql_real_escape_string($_REQUEST['user']));

Ответы [ 5 ]

6 голосов
/ 12 декабря 2010

SQL требует одинарных кавычек, чтобы указать строку для сравнения, и подстановочный знак (%) должен быть включен в эти одинарные кавычки.Двойные кавычки используются только для алиасов столбцов и таблиц.,Всегда используйте mysql_real_escape_string при работе со строками, отправляемыми в базу данных MySQL.

1 голос
/ 12 декабря 2010

Похоже, ваши цитаты отключены .. попробуйте что-то вроде ...

$q=mysql_query("select * From user Where fullName Like '%".$_REQUEST['user']."%'",$link);

Кроме того, вы захотите убедиться, что входящий параметр sql-escape-экранирован для предотвращения внедрения sql. Я не знаю php, но это, вероятно, что-то похожее на ...

$q=mysql_query("select * From user Where fullName Like '%".mysql_escape($_REQUEST['user'])."%'",$link);
1 голос
/ 12 декабря 2010

Вы перепутали цитаты. используйте это:

$q=mysql_query('SELECT * 
                FROM user
                WHERE fullName LIKE "%' . $_REQUEST['user'] . '%"',$link );

Кстати, это плохая практика. Вы используете неэкранированный ввод в своем запросе и открыты для внедрения SQL.

0 голосов
/ 12 декабря 2010

Я думаю, это должно быть ... Где полное имя, например, "%". $ _REQUEST ['user']. "% '" ... с символом% внутри простых кавычек.

0 голосов
/ 12 декабря 2010

@ AndroidUser99: измените запрос на -

$q = mysql_query("select * from user Where fullName like '%" . $_REQUEST['user'] . "%'", $link);

Обновление

Я думаю, что нам может понадобиться больше кода, поскольку ни один из ответов, кажется, не работает. Ссылка на базу данных даже создается в $link? Если есть ошибки, что это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...