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

标签 php mysql mysqli prepared-statement bulkinsert

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

在 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/

相关文章:

PHP 包含函数和 AJAX div 加载

php mysqli 数据统计和搜索功能不起作用

php - 通过 PHP 将 SQL 行插入 PHPmyadmin

php - Javascript/JQuery - 页面加载后动态运行代码一段时间

javascript - 使用 Ajax 显示数据库中的数据

php - 我在使用 jQuery 删除元素时遇到问题

php - 使用复选框组..如何将其插入数据库并可以在 PHP 中显示?

mysql - 投票系统,关系数据库,SQL 查询

php - 在 php ajax 中加载更多结果的问题

php - 请帮助我将 MySQL 转换为 MySQLi