[英]How to insert multiple rows for comma seperated values in mysqli prepared statement?
我有一個逗號分隔值作為單獨的行插入? 下面是嘗試插入逗號分隔值的代碼。 如何按預期在數據庫中插入值 output。
$arrRequestData['id'] = 1;
$arrRequestData['docid'] = '2,3';
$dbcon = new db();
$ins_trans = $dbcon->query('
INSERT INTO exxx_ddd_ccc (
eshareq_id,
document_id
)
VALUES (?,?)',
$arrRequestData['id'],
$arrRequestData['docid']
);
output:
id docid
12 2,3
expected output
id docid
12 2
13 3
我會使用 PHP explode() function 然后循環數據以單獨插入它們。 您可以在數據庫端執行此操作,但取決於您將使用哪種方法的數據集大小。
看起來您正在為 db() 使用自定義 class 但如果您正在使用連接構建 class ,然后傳遞您的查詢,您可以將此行$dbcon = new db();
在 foreach 循環之外
$arrRequestData['docid'] = '2,3';
$splitData = explode(",", $arrRequestData['docid']);
foreach($splitData as $key=>$value) {
$dbcon = new db();
$ins_trans = $dbcon->query('
INSERT INTO exxx_ddd_ccc (
eshareq_id,
document_id
)
VALUES (?,?)',
$arrRequestData['id'],
$value
);
}
我認為沒有辦法按照您提出的方式進行操作。 $arrRequestData['docid'] 在您的示例中是一個字符串。 如果你想把它變成一個數組,你應該用 explode function 來做,例如:
$arrRequestData['docid'] = explode(',', $arrRequestData['docid']); // now $arrRequestData['docid'] is an array
然后用foreach構建一個多重插入:
$insert = [];
foreach ($arrRequestData['docid'] as $docid) {
$insert[] = "({$arrRequestData['id']}, $docid)";
}
$insert = implode(',', $insert);
// now $insert looks like (1,1), (1,2)
$ins_trans = $dbcon->query("
INSERT INTO exxx_ddd_ccc
(
eshareq_id,
document_id
)
VALUES $insert
");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.