簡體   English   中英

如何在 mysqli 准備語句中為逗號分隔值插入多行?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM