簡體   English   中英

在循環中用准備好的語句插入幾行

[英]INSERT several rows with a prepared statement in a loop

使用數組部分插入時的SQLSERV PHP錯誤

陣列准備

foreach ($data  as $rs) {

 $params []="({$rs->hd},'{$rs->dvn}',{$rs->mth},{$rs->yr},{$rs->stid},{$rs->prcd},'{$rs->prnm}',{$rs->prte},{$rs->ssl},{$rs->clsk},1)";
}

插入陳述:

$SqlInsert="insert into  SQl_test (Ss_Hq_cd,Ss_division,Ss_month,Ss_yr,Ss_stk_Id,Ss_prod_cod,Ss_prod_name,ss_prod_rate,Ss_Sale,Ss_Cl_stk,ss_tran_stat) values(?,?,?,?,?,?,?,?,?,?,?) ";
$stmt = sqlsrv_query( $conn, $SqlInsert,$params);

品味:

語句准備/執行中的錯誤。\\ n“

數組([0] =>數組([0] => 22018 [SQLSTATE] => 22018 [1] => 245 [代碼] => 245 [2] => [Microsoft] [用於SQL Server的ODBC驅動程序13] [ [SQL Server]將varchar值'(757,'MAIN',12,2018,100899,1250,'xyz',0,100,45,1)'轉換為數據類型int時轉換失敗。[message] => [Microsoft] [SQL Server ODBC驅動程序13] [SQL Server]將varchar值'(757,'MAIN',12,2018,100899,1250,'xyz',0,100,45,1)'轉換為數據類型int時轉換失敗。)

$params每個數組元素只是作為一個字符串創建的。

 $params []="({$rs->hd},'{$rs->dvn}',{$rs->mth},{$rs->yr},{$rs->stid},{$rs->prcd},'{$rs->prnm}',{$rs->prte},{$rs->ssl},{$rs->clsk},1)";

您可能打算將其創建為數組...

 $params []=[$rs->hd,$rs->dvn,$rs->mth,$rs->yr,$rs->stid,$rs->prcd,$rs->prnm,$rs->prte,$rs->ssl,$rs->clsk,1];

然后,您將循環運行INSERT,將每個數據數組一次傳遞給查詢...

$SqlInsert="insert into  SQl_test (Ss_Hq_cd,Ss_division,Ss_month,Ss_yr,Ss_stk_Id,Ss_prod_cod,Ss_prod_name,ss_prod_rate,Ss_Sale,Ss_Cl_stk,ss_tran_stat) values(?,?,?,?,?,?,?,?,?,?,?) ";

foreach ( $params as $param ) {
    $stmt = sqlsrv_query( $conn, $SqlInsert,$param);
}

使用mysqli-您還需要在循環之前准備INSERT並僅對循環中的每一行數據執行它,SQL Server中可能有類似的事情,但我所不擅長。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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