首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带可选参数的php mysql函数

带可选参数的php mysql函数
EN

Stack Overflow用户
提问于 2012-09-26 19:13:13
回答 3查看 4.3K关注 0票数 3

我需要帮助提供php函数的可选参数,这将在MySQL数据库中搜索匹配的条件。

场景:前端=将有6个html输入表单字段命名为authorName、authorCountry、authorState等

当用户填写此字段时,字段值将作为mysql参数传递,用于搜索数据库。这里的问题是,如果用户想知道美国的作者列表,他将在国家字段中输入美国,而离开其他字段。但这会中断mysql查询,因为其他字段都留空了。

我试过了,但对我来说很费力。

代码语言:javascript
复制
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; }

请帮我传递可选参数。

谢谢。。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-09-26 19:18:53

代码语言:javascript
复制
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);
 }

并确保在传递给函数之前对这些变量进行了转义。

票数 7
EN

Stack Overflow用户

发布于 2012-09-26 19:15:09

这样做:

代码语言:javascript
复制
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子句一样。

票数 5
EN

Stack Overflow用户

发布于 2012-09-26 19:16:08

该函数应如下所示

代码语言:javascript
复制
function getAuth(authName=NULL, authCoun="Default value", authSate="Default value") {}

当你不将value传递给函数时,默认值就会出现。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12600427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档