我需要帮助为php函数提供可选参数,它将在MySQL数据库中搜索匹配条件。
场景:前端= 将有6个html输入表单字段,名为authorName,authorCountry,authorState等等
当用户填写此字段时,字段值将作为搜索db的mysql参数传递。这里的问题是,如果用户想知道美国的作者名单,他将在国家/地区进入美国并离开其他领域。但是这会破坏mysql查询,因为其他字段都留空了。
我尝试过,但它对我有用。
function getAuth(authName=NULL, authCoun=NULL, authSate=NULL) {
$query = mysql_query("SELECT * FROM authTable WHERE authName='authName'
AND authCoun='authCoun' AND authSate='authSate'");
return $query; }
请帮我传递可选参数。
谢谢..
答案 0 :(得分:6)
function getAuth($authName=NULL, $authCoun=NULL, $authSate=NULL) {
$sql = "SELECT * FROM authTable WHERE 1 = 1";
if ($authName) {
$sql .= " AND authName='$authName'";
}
if ($authCoun) {
$sql .= " AND authCoun='$authCoun'";
}
if ($authSate) {
$sql .= " AND authSate='$authSate'";
}
return mysql_query($sql);
}
确保在传递给函数之前将这些变量转义。
答案 1 :(得分:5)
这样做:
SELECT *
FROM authTable
WHERE 1 = 1
AND (@authName IS NULL OR authName = @authNameParam)
AND (@authCoun IS NULL OR authCoun = @authCounParam)
AND (@authSate IS NULL OR authSate = @authSateParam)
...
即使没有任何参数传递给此查询,此查询也不会中断,即传递所有NULL
值的值,在这种情况下,整个WHERE
子句将变为WHERE 1 = 1
就像SELECT * FROM authtable
一样,就好像没有WHERE
条款一样。
答案 2 :(得分:0)
该功能应该是这样的
function getAuth(authName=NULL, authCoun="Default value", authSate="Default value") {}
当你没有将值传递给函数时,默认值即将到来。