Я пытаюсь написать динамический SQL-запрос. запрос работает нормально с intergers. однако, как только я попытался вставить строку, она терпит неудачу.Синтаксическая ошибка при попытке динамически писать поисковый запрос
ниже мой запрос:
public function getList($params['SearchBy'])
{
$select = "
SELECT
u.id, u.firstName,u.lastName,u.city";
$from = "
FROM
user u";
$where = "
WHERE
u.live = 1 ";
if(isset($params['SearchBy']))
{
$where .= 'AND '. implode(' AND ', $params['SearchBy']);
}
$GroupBy = "
GROUP BY
u.id ";
$sql = $select.$from.$where.$GroupBy;
}
для searchby(), я динамически производить эти значения из поискового запроса; я затем поместить их в массив .:
$this->searchBy[$key][] = $key.' = '. $val;
это прекрасно работает, когда сво целое. однако строки должны иметь "". я не уверен, чтобы избежать "", чтобы он появился в запросе.
т.е.$this->searchBy[$topkey][] = $key.' = '. "$val";
я пытался сделать это, но он не работает:
$this->searchBy[$topkey][] = $key.' = '. \"$val\";
был бы признателен за любые советы о том, как избежать этого.
спасибо.
ниже - это необработанный запрос sql, полученный из поиска;
SELECT
u.id,u.picNo,
u.membershipType,
u.firstName,u.lastName
FROM
user u
LEFT OUTER JOIN
table_messages_between_members sm
ON
u.id = sm.senderId
LEFT OUTER JOIN
list_photos_uploaded_by_members ph
ON
u.id = ph.userId
WHERE
u.live = 1 AND u.membershipType = 1 AND u.city = London
GROUP BY
u.id
ORDER BY
что это содержит $ params ['SearchBy']? –
Этот вопрос не содержит двух самых полезных вещей. 1) какова ваша строка $ sql перед ее выполнением (т. Е. Распечатать ее) и 2) полный текст ошибки. Тем не менее, прямо сейчас у вас нет пробела между 'u.live = 1' и' AND' –
эй pala. извините, в самом запросе, было место. также. его должно быть $ params ['Searchby'] –