我正在为演员经理编制演员并能够浏览他们的平台。我的表'演员'设置与名字,姓氏,电子邮件,电话,地址等。简化mysql筛选器查询
我有一个browse.php页面,它有一个窗体来过滤结果。这里是我的课程,我需要帮助简化以及在字段为空时摆脱通配符结果。
我将表单数据传递到数组$ $ search中,类将检查数组节是否已填充并写入SQL查询。
public function getActors($search) {
if(isset($search)) {
if($search["first_name"] == NULL) { $first_name = "LIKE '%'"; } else { $first_name = "LIKE '".$search["first_name"]."'"; }
if($search["last_name"] == NULL) { $last_name = "LIKE '%'"; } else { $last_name = "LIKE '".$search["last_name"]."'"; }
if($search["gender"] == NULL) { $gender = "LIKE '%'"; } else { $gender = " = '".$search["gender"]."'"; }
if($search["address_state"] == NULL) { $address_state = "LIKE '%'"; } else { $address_state = " = '".$search["address_state"]."'"; }
if($search["ethnicity"] == NULL) { $ethnicity = "LIKE '%'"; } else { $ethnicity = " = '".$search["ethnicity"]."'"; }
if($search["status"] == NULL) { $status = "LIKE '%'"; } else { $status = " = '".$search["status"]."'"; }
$sql = "SELECT * FROM actor WHERE
first_name ".$first_name." AND
last_name ".$last_name." AND
gender ".$gender." AND
address_state ".$address_state." AND
ethnicity ".$ethnicity." AND
status ".$status."
";
} else {
$sql = "SELECT * FROM actor";
}
$s = mysql_query($sql) or die (mysql_error());
$numrows = mysql_num_rows($s);
for($x=0; $x < $numrows; $x++){
$actorArray[$x] = mysql_fetch_row($s);
}
return $actorArray;
}
简化这个或建议的任何帮助?
这很好。我在WHERE字段LIKE'&'的原因是因为我找不到一种方法来编译SQL字符串足够聪明,知道在哪里插入“AND”和“WHERE”。这给了我更多的选择,更少的代码和我现在知道的内爆函数将会有所帮助。谢谢! – wwwroth
记得清理您的数据输入 – Daniel