gpt4 book ai didi

php - MySQLi - 当您有超过 15 个 '?' 和 sisisissssisisiss 的查询时,您如何跟踪?

转载 作者:可可西里 更新时间:2023-11-01 07:03:31 27 4
gpt4 key购买 nike

当 MySQLi 语句很小时,它们非常容易使用。但是,一旦您拥有超过一定数量的有界参数,就很难跟踪 si 同步属性。像下面的例子:

$query = "INSERT INTO transaction_table (eventide, proxid, valid, fname, lame, email, studentid, status, affiliation, grade, error_statement, gender, netid, residence, school, department, major1, major2, dob, type, level) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

if($stmt = $mysqli->prepare($query)){
$grade_new = gradeChanger($grade);
$stmt->bind_param('iiisssiisssssissssiss',$_POST['pid'],$_POST['proxid'],$valid,$fname,$lname,$email,$studentid,$status,$affiliation,$grade_new,$error_submit,$gender,$netid,$residence,$school,$department,$major1,$major2,$dob,$type,$level);
$stmt->execute();
$stmt->close();
}

有没有更简单的方法来分离 is?像这样,我觉得如果您能够像这样将 bind_param 分解成组,它会更容易阅读。有没有办法做这样的事情?

$stmt->bind_param('iiis', $_POST['pid'], $_POST['proxid'], $valid, $fname);
$stmt->bind_param('ssii', $lname, $email, $studentid, $status);
$stmt->bind_param('sass', $affiliation, $grade_new, $error_submit, $gender);
$stmt->bind_param('siss', $netid, $residence, $school, $department);
$stmt->bind_param('ssiss', $major1, $major2, $dob, $type, $level);

是切换到PDO的唯一解决方案吗?

最佳答案

一种方法是动态调用bind_param方法。您显然知道是否对每个变量使用 is,所以让我们将所有这些放入一个数组中(以正确的顺序)。

$params = array(
array('i', $_POST['pid']),
array('i', $_POST['proxid']),
array('i', $valid),
array('s', $fname),
// etc.
);

然后您可以遍历它来构建“格式字符串”以传递给 bind_param

$bind_params = array('');
foreach($params as &$vals){
$bind_params[0] .= $vals[0];
$bind_params[] =& $vals[1];
}
call_user_func_array(array($stmt, 'bind_param'), $bind_params);

这将使您更容易添加/删除值并跟踪它们。

关于php - MySQLi - 当您有超过 15 个 '?' 和 sisisissssisisiss 的查询时,您如何跟踪?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21317532/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com