说我在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
希望这是有道理的