Php 尝试动态写入搜索查询时出现语法错误
我正在尝试编写一个动态sql查询。该查询可以与整数配合使用。然而,一旦我尝试插入一个字符串,它就失败了 以下是我的疑问:Php 尝试动态写入搜索查询时出现语法错误,php,mysql,Php,Mysql,我正在尝试编写一个动态sql查询。该查询可以与整数配合使用。然而,一旦我尝试插入一个字符串,它就失败了 以下是我的疑问: public function getList($params['SearchBy']) { $select = " SELECT u.id, u.firstName,u.lastName,u.city"; $from = " FROM user u"; $where = "
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;
如果它是一个整数,则此操作非常有效。但是字符串需要有“”。我不确定是否要转义“”以便它显示在查询中。
i、 e
我尝试过这样做,但没有成功:
$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
简单的解决办法是
$this->searchBy[$topkey][] = $key.' = "'. $val .'"';
这种方法,尤其是允许最终用户写入/输入值的方法,可能是一种主要的安全威胁,您应该或使用(甚至更好) 这个问题缺少两个最有用的东西。1) 在执行之前,$sql字符串是什么(即打印出来),以及2)错误的全文。这就是说,现在,你在
u.live=1
和和之间没有空间了。抱歉,在实际查询中,有空格。也。它应该是$params['Searchby']您可以发布它生成的sql
吗?@PaulKendal然后您应该将实际查询、实际值和实际错误放入数组中。任何事情都涉及猜测,只会使整个过程变慢。@PaulKendal很高兴听到这一点,正如我所说的,尝试使用pdo。也许可以帮你省去一些不愉快的时刻。:)
$this->searchBy[$topkey][] = $key.' = "'. $val .'"';