我有一个搜索功能,可以让你输入最后一个,第一个和中间名的不同类型框。我没有任何代码问题,但有谁知道如何优化它?PHP/MySQL如何设置更简单的SELECT查询?
的代码有多种,如果是发现了什么文本框是unempty并随后在WHERE作为你可以看到下面的语句:
$where1 = $_POST['firstname'];
$where2 = $_POST['midname'];
$where3 = $_POST['lastname'];
if(!empty($where1) && empty($where2) && empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE firstname = '$where1'");
} else if(!empty($where1) && !empty($where2) && empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE firstname = '$where1' AND midname = '$where2'");
} else if(!empty($where1) && !empty($where2) && !empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE firstname = '$where1' AND midname = '$where2' AND lastname = '$where3' ");
} else if(!empty($where1) && empty($where2) && !empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE firstname = '$where1' AND lastname = '$where3' ");
} else if(empty($where1) && !empty($where2) && !empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE lastname = '$where3' AND midname = '$where2' ");
} else if(empty($where1) && !empty($where2) && empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE midname = '$where2'");
} else if(empty($where1) && empty($where2) && !empty($where3)){
$result = $connection->query("SELECT * FROM senior WHERE lastname = '$where3'");
}
您可能不想“简化”代码。多重查询将允许MySQL利用特定于每组条件的索引。 – 2014-10-27 03:07:07
搜索*“PHP的SQL查询生成器”*。当你在它,请参阅http://php.net/manual/language.operators.string.php – Phil 2014-10-27 03:07:39
这属于http://codereview.stackexchange.com/ – EternalHour 2014-10-27 03:22:23