【问题标题】:Use insert, update, delete in one query using mysqli_multi_query?使用 mysqli_multi_query 在一个查询中使用插入、更新、删除?
【发布时间】:2015-07-30 12:49:52
【问题描述】:

现在,我正在使用mysqli_multi_query(),并且我有两个操作:

  • 第一次插入
  • 第二次更新。

我还使用mysqli_multi_query() 在一个查询中尝试了这两种方法,但它仍然无法正常工作。

我正在为超过 100 条记录工作,所以我一次可以插入多少行。

这是查询:

$qry1 .= "INSERT INTO productinfo( productName, productPrice,productSaleprice,productImage,
       productLink, productColor, productSize, categoryId, ourceProductId,sourceId)"; 
$qry1 .= 'VALUES ("'.$productname.'","'.$productprice.'","'.$productsaleprice.'",
       "'.$productimage‌.'","'.$productlink.'","'.$color.'","'.$size.'",
       "'.$data2['categoryId'].'","'.$so‌urcePid.'","'.$sourceId.'");';

【问题讨论】:

  • 请发布查询。
  • 包含你的代码没有它一切都是猜测。根据手册Executes one or multiple queries which are concatenated by a semicolon.
  • 你是 RTFM 吗? php.net/manual/en/mysqli.multi-query.php - 这里的“F”代表“很棒”;-)
  • 请不要 ^ 删除它并在您的问题中发布它(完整的真实/实际代码)。没有人会读到它,它只有 1 行。
  • 哦,我放弃了。祝你好运。

标签: php mysql mysqli


【解决方案1】:

你可以用语句做到这一点:

INSERT INTO <table_name> (<PK_name>, <field_name>,...) VALUES (<PK_value>, <field_value,...),(<field_value,...), (<field_value,...)
ON DUPLICATE KEY UPDATE field_name = VALUES(<field_name>)

您可以使用此语句一次插入 100 多行。

【讨论】:

  • 我认为 OP 知道如何构造插入语句。问题是关于 PHP 中的多重查询。
【解决方案2】:

也许你的mysql服务器有限制,所以大查询会失败:

如果您收到类似“Mysql Error (1153): Got a packet large than 'max_allowed_pa​​cket' bytes”之类的错误,您应该检查 mysql 配置中的“max_allowed_pa​​cket”选项。

请查看 mysqli_multi_query 文档中的以下注释: http://php.net/manual/en/mysqli.multi-query.php#97354

【讨论】:

    【解决方案3】:

    除非您确切知道自己在做什么,否则不应使用 multi_query。

    否则,使用传统的单独调用 query()/prepare()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-14
      • 2018-03-30
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多