У меня есть веб-служба, в которой пользователь передает динамическое количество вопросов.php binding динамическое число переменных для запроса вставки пакета
На стороне php я использую взрыв с помощью? чтобы вырезать каждый вопрос. Затем мне нужно сделать пакетную вставку.
Что я сделал до сих пор выглядит следующим образом:
$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);
}
Я не совсем уверен, как связать параметры в моем случае. Я использую процедурные привязки. Я обычно связывают параметры следующим образом:
mysqli_stmt_bind_param($stmt, "is", $geofenceID, $question);
mysqli_stmt_execute($stmt);
Я думаю, тип часть просто:
$bindVar = '';
for ($i = 0; $i < count($checkInQs); $i++){
$bindVar .= "is";
}
Но не я не знаю, как управлять переходящим в остальной части данных?
Я был бы удивлен, если бы это было где-нибудь рядом с такой скоростью, как массовая вставка, но из любопытства, хорошо ли он вам помог? –
@ DanFarrell Это было хорошо для того, что мне было нужно. Обычно там было бы всего 3-5 вставок на вызов ws, поэтому он работал нормально для меня. Я все равно с удовольствием перейду к основному вставке, если я получил ответ о том, как безопасно связывать параметры с динамическим запросом – user2363025