How can I simplify this PHP/MySQL query?
$query2 = "select * from dvdcollector where situatie='goedgekeurd'";
$query2 .= " and regisseur = '". escapeQuote($result->fields['regisseur']) . "'";
$query2 .= " or titel like '%". escapeQuote($result->fields['titel']) ."%'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs2 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs3 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs4 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs5 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= "开发者_Python百科 or acteurs6 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs6 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs7 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs8 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs9 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs2']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs3']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs4']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs5']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs6']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs7']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs8']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs9']) . "'";
$query2 .= " or acteurs10 = '". escapeQuote($result->fields['acteurs10']) . "'";
$query2 .= " order by RAND()";
EDIT: now with more tables!
First of all it seems to me that the design is flawed. If I understand right you used the fields to list the actors' names:
movieId | actor | actor 2 | actor 3 | actor 4
This is bad for so many reasons. You may want to start reading about normalization in databases.
You'd better split this into three tables:
movies > movieId | movieTitle
actors > actorId | actorName
cast > movieId (fk to movies.movieId) | actorId (fk to actors.actorId)
Example:
movies > movieId:=123 | movieTitle:='Big Fish'
movies > movieId:=124 | movieTitle:='Matrix'
actors > actorId:=555 | actorName:='Ewan McGregor'
actors > actorID:=777 | actor:='Keanu Reeves'
actors > actorID:=888 | actor:='Lawrence Fishburne'
cast> actorId:=123 | movieId:=123
cast> actorId:=555 | movieId:=124
cast> actorId:=888 | movieId:=124
Then your query would look something like:
SELECT *
FROM movies JOIN cast ON cast.movieId=movies.movieID
JOIN cast JOIN actors ON actors.actorId = cast.actorID
WHERE actors.actorName = 'the_actor'
Post scriptum: random order in queries is a bit of an anti-pattern as well, see SQL Antipatters by Bill Karwin.
It looks like you forgot to normalize a this table. Acteur is definately a repeating group. I suggest you normalize this now before the headage even gets worse.
If you don't want to do this, use where IN('')
statements and use a select in that statement.
CRIKEY!!!
You need 3 tables...
table 1: dvd table 2: acteur
table 3: dvd_acteur
NOW if you need one record from your query GROUP_CONCAT will help...
SELECT dvd.*, GROUP_CONCAT(`acteur`.`Name` SEPARATOR ',')
FROM dvd
LEFT JOIN dvd_acteur ON dvd_acteur.dvdID = dvd.dvdID
LEFT JOIN acteur ON acteur.acteurID = dvd_acteur.acteurID
WHERE dvd.situatie = 'goedgekeurd'
GROUP BY dvd.dvdID
see how that goes.
You need to look into using loops: http://www.w3schools.com/php/php_looping.asp .
Once you've got the hang of that, learn some mysql best practises: http://net.tutsplus.com/tutorials/other/top-20-mysql-best-practices/
You may also want to look at your database design and consider adding some kind of attribute to you Actors... For example SELECT FROM actors WHERE acting_style = 'method acting'
using IN()
select * from dvdcollector where situatie='goedgekeurd'
...
and (acteurs in(acteurs1, acteurs2, ...) or
acteurs2 in(acteurs1, acteurs2, ...) or
acteurs3 in(acteurs1, acteurs2, ...)
)
精彩评论