我具有基於插入命令以下:插入數組返回不完整的數據(的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)NOT NULL,Points_ID
VARCHAR(50)NOT NULL, PRIMARY KEY(ID
) UNIQUE KEYID
(ID
) ) ENGINE = InnoDB的
現在,讓我們說,例如該$insertSQL2
回聲爲INSERT INTO table2 (Points_ID, StaticCode) VALUES ('24859', '123456'), ('24649', '123456'), ('25166', '123456')
我希望三行出現在表2 ...但是這是發生了什麼:
- 無論是插入命令(
$insertSQL1
和$insertSQL2
)呢,其實,插入數據。 - 就是這樣,雖然
$insertSQL1
將所有表單中的所有數據插入到table1中的必填字段中,但是$insertSQL2
(它插入數組)不會 - 它只是插入一次靜態代碼,然後離開Points_ID空白。
我已經僅僅複製呼應命令到PHPMySQL測試的INSERT語句,它不正是它應該是,讓我知道我的版本的MySQL可以處理它。
任何想法爲什麼?
你需要證明你的表結構。例如是'Points_ID'外鍵字段?匹配的外部記錄是否存在?你的代碼也容易受到SQL注入攻擊,你使用的是一個非常危險的foreach()結構,而且你的實際查詢調用是不必要的冗長的。例如清理你的代碼,也許事情會開始工作。 –
@MarcB - 這僅僅是目前的概念證明(因此代碼混亂)。表結構:''table2'( ' ID' int(50)NOT NULL AUTO_INCREMENT, 'StaticCode' varchar(100)NOT NULL, 'Points_ID' varchar(50)NOT NULL, PRIMARY KEY('ID') , UNIQUE KEY'ID'('ID') )ENGINE = InnoDB' – user1259798