0

我正在用 PHP 编译一个查询以在数据库中插入产品:

$query = "";

if ($A > 0) {$query .="INSERT INTO ped_prod (`ped_id`, `prod_id`, `cant`) VALUES ($last_id, 1, $A); ";}

if ($B > 0) {$query .="INSERT INTO ped_prod (`ped_id`, `prod_id`, `cant`) VALUES ($last_id, 2, $B); ";}

if ($C > 0) {$query .="INSERT INTO ped_prod (`ped_id`, `prod_id`, `cant`) VALUES ($last_id, 3, $C); ";}

通过运行查询时mysql_query($prodquery, $conexion)出现以下错误:

You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near
'INSERT INTO ped_prod (`ped_id`, `prod_id`, `cant`) VALUES (13, 3, 2)' at line 1

我尝试过:
- 交换引号 (')、双引号 (") 和反引号 (`)
- 检查 MySQL 保留字列表
- 在 PHPmyAdmin 中运行查询(它显示“#1 受影响的行”,但它会将数据加载到表,在浏览器中执行脚本时不是这种情况)

我错过了什么?提前致谢!

4

1 回答 1

1

mysql_query()一次只支持一个查询。请参阅相应的 PHP 文档

mysql_query() 将唯一查询(不支持多个查询)发送到与指定链接标识符关联的服务器上当前活动的数据库。

因此,在您的情况下,只需单独运行每个INSERT语句就可以了。

另一种选择,因为你所有的插入都是相似的,是通过连接值子句来连接它们:

$values = array();
if ($A > 0) {$values[] ="($last_id, 1, $A)";}

if ($B > 0) {$values[] ="($last_id, 2, $B)";}

if ($C > 0) {$values[] ="($last_id, 3, $C)";}

// echo query if needed
if ( count( $values ) > 0 ) {
  $queries = 'INSERT INTO ped_prod (`ped_id`, `prod_id`, `cant`) VALUES ' . implode( ',', $values );

  // execute query
  //  ...
}

此外,mysql_X函数已被弃用。切换到PDOmysqli

于 2012-11-20T16:29:06.190 回答