[英]Inserting array returning incomplete data (MySQL/PHP)
我有一個基於以下命令的插入命令:
$baseINS = "INSERT INTO table2 (Points_ID, StaticCode) VALUES ";
$arrayINS = explode(", ", $arraystring);
foreach ($arrayINS as &$array1INS) {
$array1INS = "('" . $array1INS . "', '123456')";
}
$arrayvaluesINS = implode(', ', $arrayINS);
$insertSQL2 = $baseINS . $arrayvaluesINS;
從以下事務中查詢$insertSQL2
:
$insertSQL = "BEGIN";
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = $insertSQL1;
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = $insertSQL2;
mysql_query($insertSQL) or die (mysql_error());
$insertSQL = "COMMIT";
mysql_query($insertSQL) or die (mysql_error());
(其中$insertSQL1
是另一個SQL插入到另一個表中)
表結構如下:
table2
(ID
int(50)NOT NULL AUTO_INCREMENT,
StaticCode
varchar(100)非空,Points_ID
varchar(50)非空,主鍵(ID
),唯一鍵ID
(ID
))ENGINE = InnoDB
現在,例如,假設$insertSQL2
回顯為INSERT INTO table2 (Points_ID, StaticCode) VALUES ('24859', '123456'), ('24649', '123456'), ('25166', '123456')
我希望三行出現在table2中...但這是發生的情況:
$insertSQL1
和$insertSQL2
)都可以插入數據。 $insertSQL1
將所有表單中的所有數據插入到table1中的必填字段中,但是$insertSQL2
(正在插入數組)卻沒有-它僅插入靜態代碼一次,並$insertSQL2
Points_ID為空白。 我已經通過將回顯的命令復制到PHPMySQL中來測試了INSERT語句,它確實執行了預期的操作,因此我知道我的MySQL版本可以處理它。
有什么想法嗎?
從您的代碼看起來您正在使用mysql擴展。 您應該使用mysqli或pdo_mysql。 我相信交易不適用於mysql。
mysqli看起來幾乎相同,但對於事務,請使用mysqli功能
/* set autocommit to off */
$mysqli->autocommit(FALSE);
/* Insert some values */
$mysqli->query($insertSQL);
/* commit transaction */
$mysqli->commit();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.