当您不知道要接收的参数数量时,你们会怎么做?
例如:
if($a==1) $filter.=" AND u.name = ?";
if($b==1) $filter.=" AND u.address = ?";
if($c==1) $filter.=" AND u.age = ?";
if($d==1) $filter.=" AND u.city = ?";
ETC...
$stmt->prepare("SELECT id
FROM users u
WHERE u.cp = ?
".$filter);
$stmt->bind_param("i", $cp);
现在?如果您收到$a = 1
你会得到一个错误,因为你只传递了 1 个参数bind_param
。所以你不知道你是否会收到 1、2、3 还是 4 个参数,我不想做很多IF
或者我必须使用循环来计算参数的数量?
添加条件时,您必须管理参数列表(类型和值)。这意味着您需要使用call_user_func_array http://www.php.net/manual/en/function.call-user-func-array.php将值列表传递给bind_param
.
基本上,在你的每个if
语句中,不仅要添加条件,还要添加参数类型(例如$types .= 'i'
)和参数(例如$args[]=$arg
).
您将在以下评论中找到有关如何执行此操作的一个很好的示例bind_param
文档:http://www.php.net/manual/en/mysqli-stmt.bind-param.php#109256 http://www.php.net/manual/en/mysqli-stmt.bind-param.php#109256
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)