Неправильный синтаксис запроса MySQL? - PullRequest
1 голос
/ 11 апреля 2011

У меня вопрос по поводу моего синтаксиса запроса mysql

Когда я использую это

$result = $db->executeQuery('SELECT * FROM `person`  WHERE '.$searchOn.' LIKE "%'.$critera.'%"  ');

Запрос возвращает результат.

Но при использовании этого запроса

$result = $db->executeQuery('SELECT * FROM `person`  WHERE "'.$searchOn.'" LIKE "%'.$critera.'%"  ');

Запрос ничего не возвращает ...

В чем разница между '. $ SearchOn.' и "'. $ searchOn.'"?

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Имя столбца не должно заключаться в одинарные или двойные кавычки.

У вас есть двойная кавычка вокруг имени столбца в предложении where.

    $result = $db->executeQuery('SELECT * FROM `person`  
     WHERE "'.$searchOn.'" LIKE "%'.$critera.'%"  ');

Окончательный запрос: -

SELECT * FROM `person`  WHERE "field_name" LIKE ...

Это вызывает ошибку mysql.

Вы можете заключить имя столбца в `` обратные галочки ”, чтобы избежать любой странной ошибки, снова вызывающей зарезервированные слова mysql.

EDIT

Ваш запрос должен быть таким.

    $result = $db->executeQuery('SELECT * FROM `person`  
    WHERE `'.$searchOn.'` LIKE "%'.$critera.'%"  ');
0 голосов
/ 11 апреля 2011

Я думаю, это вызвано неправильным использованием одинарных и двойных кавычек.

Попробуйте:

$result = $db->executeQuery("SELECT * FROM person  WHERE ".$searchOn." LIKE %".$critera."%");

Или:

$result = $db->executeQuery("SELECT * FROM person  WHERE $searchOn LIKE %$critera%");

Оба должны работать ...

В основном, когда вы объединяете строку и переменную в PHP ...

0 голосов
/ 11 апреля 2011

Имя столбца не может быть в двойных кавычках. Если вы хотите использовать кавычки, используйте те, которые вы использовали для имени таблицы.

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