gpt4 book ai didi

用于批量插入查询的php绑定(bind)动态变量数

转载 作者:行者123 更新时间:2023-11-29 03:26:43 24 4
gpt4 key购买 nike

我有一个网络服务,用户可以在其中传递动态数量的问题。

在 php 方面,我使用 explode 和 ?去掉每个问题。然后我需要进行批量插入。

到目前为止我所做的如下:

$checkInQs = explode("?", trim($_POST['checkInQs'], "?"));
$checkInSql = "INSERT INTO CheckListQs (ID, GeofenceID, type, question) VALUES ";
$checkInInsertQuery = array();
$checkInInsertData = array();
foreach($checkInQs as $q){
$checkInInsertQuery[] = "('',?, 1, ?)";
$checkInData[] = $geofenceID;
$checkInData[] = $q;
}

基于另一个类似的例子,下面是如何用pdo结束它:

if (!empty($checkInInsertQuery)) {
$checkInSql .= implode(', ', $checkInInsertQuery);
$stmt = $db->prepare($checkInSql);
$stmt->execute($checkInData);
}

我不太确定在我的情况下如何绑定(bind)参数。我正在使用程序绑定(bind)。我通常会像这样绑定(bind)参数:

mysqli_stmt_bind_param($stmt, "is", $geofenceID, $question);
mysqli_stmt_execute($stmt);

我认为类型部分很简单:

$bindVar = '';

for ($i = 0; $i < count($checkInQs); $i++){
$bindVar .= "is";
}

但不是 我不确定如何管理其余数据的传递?

最佳答案

最后,我选择利用事务、提交和回滚来获得我想要的结果:

mysqli_query($con, "start transaction;");

$allQueriesOK = true;
$checkInQs = explode("?", trim($_POST['checkInQs'], "?"));
$checkInSql = "INSERT INTO CheckListQuestions (ID, GeofenceID, type, question) VALUES ('',?,0,?)";
mysqli_stmt_prepare($stmt, $checkInSql);

foreach ($checkInQs as $q) {
mysqli_stmt_bind_param($stmt, "is", $geofenceID, $q);
if (!mysqli_stmt_execute($stmt)){
$allQueriesOK = false;
$message = mysqli_error($con);
break;
}
}

mysqli_stmt_close($stmt);

if ($allQueriesOK){
mysqli_query($con, "commit;");
}
else{
mysqli_rollback($con);
}

关于用于批量插入查询的php绑定(bind)动态变量数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34989107/

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