php – 使用一个带有可变数量输入变量的bind_param()
发布时间:2020-12-13 18:28:28 所属栏目:PHP教程 来源:网络整理
导读:我尝试使用这样的变量绑定: $stmt = $mysqli-prepare("UPDATE mytable SET myvar1=?,myvar2=... WHERE id = ?")) {$stmt-bind_param("ss...",$_POST['myvar1'],$_POST['myvar2']...); 但是一些$_POST [‘…’]可能是空的,所以我不想在DB中更新它们. 考虑到
我尝试使用这样的变量绑定:
$stmt = $mysqli->prepare("UPDATE mytable SET myvar1=?,myvar2=... WHERE id = ?")) { $stmt->bind_param("ss...",$_POST['myvar1'],$_POST['myvar2']...); 但是一些$_POST [‘…’]可能是空的,所以我不想在DB中更新它们. 考虑到空$_POST [‘…’]的所有不同组合并不实际,虽然我可以根据我的需要构建字符串“UPDATE mytable SET …”,但bind_param()是一个不同的野兽. 我可以尝试将其调用作为字符串构建并使用eval()但它感觉不对:(
您可以使用
call_user_func_array 函数使用可变数字或参数调用bind_param方法:
$paramNames = array('myvar1','myvar2',/* ... */); $params = array(); foreach ($paramNames as $name) { if (isset($_POST[$name]) && $_POST[$name] != '') { $params[$name] = $_POST[$name]; } } if (count($params)) { $query = 'UPDATE mytable SET '; foreach ($params as $name => $val) { $query .= $name.'=?,'; } $query = substr($query,-1); $query .= 'WHERE id = ?'; $stmt = $mysqli->prepare($query); $params = array_merge(array(str_repeat('s',count($params))),array_values($params)); call_user_func_array(array(&$stmt,'bind_param'),$params); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |