插入返回不完整数据的数组(MySQL / PHP)

时间:2013-01-23 15:11:27

标签: php mysql insert

我有一个基于以下内容的插入命令:

$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),   独特的钥匙IDID)   )ENGINE = InnoDB

现在,让我们假设$insertSQL2回声为INSERT INTO table2 (Points_ID, StaticCode) VALUES ('24859', '123456'), ('24649', '123456'), ('25166', '123456')

我希望在table2中出现三行......但是会发生这种情况:

  • 插入命令($insertSQL1$insertSQL2)实际上都插入了数据。
  • 就是这样,虽然$insertSQL1将所有表单中的所有数据都插入到table1中的必需字段中,但$insertSQL2(插入数组)却没有 - 它只是插入静态代码,一次,并将Points_ID留空。

我已经通过将echoed命令复制到PHPMySQL来测试INSERT语句,它完全按照它应该做的,所以我知道我的MySQL版本可以处理它。

任何想法为什么?

1 个答案:

答案 0 :(得分:0)

从您的代码看起来您​​正在使用mysql扩展。你应该使用mysqli或pdo_mysql。我相信事务不适用于mysql。

mysqli看起来几乎相同,但是对于交易使用mysqli features

/* set autocommit to off */
$mysqli->autocommit(FALSE);

/* Insert some values */
$mysqli->query($insertSQL);

/* commit transaction */
$mysqli->commit();