如何使用MySQL / PDO处理可能的多个/不存在的搜索参数

时间:2016-10-19 01:45:56

标签: php mysql pdo

说我在MySQL中有这些表

table actors
id  int  11  primary key auto_increment
name  varchar  30
sex   varchar  10

table movies
id  int  11  primary key auto_increment
name  varchar  30
type  varchar  30

table actors_movies
actor_id  int  11
movie_id  int  11

并假设我有一个HTML格式的表单,允许用户通过他们定义的参数搜索actor。

例如,用户可能只搜索名为" John"的演员,或者他们可能会搜索男性演员,并且演绎了#34;戏剧"类型的电影,或者他们可能会在电影中搜索名为" Batman"谁是女性,或者他们可能会搜索那些在戏剧中的演员。电影和/或(他们选择哪一个)"惊悚"电影。

我的解决方案是一个非常笨重的PHP脚本,它逐个构建一个准备好的语句,根据它给出的参数来查询数据库。

我的解决方案有效,但这是唯一可行的方法吗?我发现我的解决方案非常笨重,而且当我添加更多可能的参数时,它会变得更糟。

因为我被要求提供一个我正在做的事情的例子

这里是我的脚本基本上做的一些伪代码

query = "Select * from actors 
         left join actors_movies on actors.id = actors_movies.actor_id
         left join movies on movies.id = actors_movies.movie_id"

Then for each possible parameter it does something like this

if(actors.sex given)
   query append("where actors.sex ="
   for each sex given
      query append sex and either AND/OR

希望这是有道理的

0 个答案:

没有答案