Php 有没有比附加sql字符串更好的方法来生成条件sql?

Php 有没有比附加sql字符串更好的方法来生成条件sql?,php,mysql,sql,Php,Mysql,Sql,我在一个网站上有一个ajax搜索功能,可以过滤和显示任务。我可能想查看我的任务和其他任务,或者只是我的任务,或者只是其他任务 我根据ajax请求传递的参数附加sql字符串 在服务器端,它看起来像这样(但显然是经过适当的消毒) 有没有更好的方法来达到链接答案中所示的相同目的?我在这里简化了场景。有许多过滤器可用于任何组合。我无法想象当使用带有大量选项的搜索和筛选功能时,这就是创建sql的方式。为了避免sql注入攻击并保持可读性,应该使用参数绑定 那么,您还打算如何修改SQL查询的行为而不向其添加带

我在一个网站上有一个ajax搜索功能,可以过滤和显示任务。我可能想查看我的任务和其他任务,或者只是我的任务,或者只是其他任务

我根据ajax请求传递的参数附加sql字符串

在服务器端,它看起来像这样(但显然是经过适当的消毒)


有没有更好的方法来达到链接答案中所示的相同目的?我在这里简化了场景。有许多过滤器可用于任何组合。我无法想象当使用带有大量选项的搜索和筛选功能时,这就是创建sql的方式。

为了避免sql注入攻击并保持可读性,应该使用参数绑定


那么,您还打算如何修改SQL查询的行为而不向其添加带有新条件的字符串?另一种方法是选择所有[或大部分]行,将它们加载到PHP中,然后在那里处理它们。[不要这样做,这很糟糕]您可以使用多个
WHERE
子句,有一个名为
$mode
的变量,它是“我的”、“两者”或“其他”,然后使用
WHERE($mode='mine'和(您的普通子句))或($mode='both'和(您的普通子句))
等等虽然PHP字符串附加版本在清洁度和可读性方面可能是最好的,但您可以创建20个不同的查询,并根据满足的条件调用其中一个查询。是的,这是一个很好的方法。我经常构建一个条件列表,并最终将条件列表与'and'连接起来,以生成最终的完整where子句(而不是一系列的
stmnt+='和'
)@jmiloy-Hum,是的,这样会更好。将条件推送到一个数组,使用和爆炸。然而,这使得使用参数绑定更加困难。我想您需要第二个数组来将参数推送到。它似乎越来越接近于某些查询生成器的功能,但现在更喜欢手动编写SQL。事实上,正如我想暗示的那样,需要进行适当的清理。我不是一个最霍布斯的人,这是我的日常工作