MySQL SELECT函数在字段列表中返回未知列错误

班加·瓦尔

我有这段代码,我无法找出代码中的错误,因为它似乎完全是我写的。这是代码...

function add_product_to_cart($pdo, $table, $cart_id, $product_id, $attributes){
    $parameters = [':product_id' => $product_id, ':attributes' => $attributes];

    #$addProduct = ' DECLARE productQuantity INT; ';
    #$addProduct = 'SELECT @cart := ' . $cart_id;
    $addProduct = 'SET @cart := ' . $cart_id . ';';
    $addProduct .= 'SELECT  * FROM `' . $table . '` WHERE cart_id = @cart AND product_id = :product_id';
    $addProduct .= ' AND attributes = :attributes ';
    $addProduct .= 'IF @cart IS NULL THEN INSERT INTO `' . $table . '`(';
    $addProduct .= 'cart_id, product_id, attributes, quantity, added_on) VALUES (';
    $addProduct .= '@cart, :product_id, :attributes, 1, 1, NOW())';
    $addProduct .= ' ELSE UPDATE `' . $table . '` SET quantity = quantity + 1, buy_now = true WHERE cart_id = @cart';
    $addProduct .= ' AND product_id = :product_id AND attributes = :attributes';
    query($pdo, $addProduct, $parameters);
    return $query;
}

这是错误

无法连接到数据库服务器:SQLSTATE [42S22]:找不到列:1054在“字段列表”中的未知列“ 3ab31dbf3ced5f2c4df0b739e740110f”

我要做的实际上是检查cart_id是否保存在数据库中,如果已保存,请更新数据库中的数量,如果没有,则将其插入数据库中。

它抱怨的未知列是值,要搜索的列是cart_id

专线小巴

正如Nigel Ren所说,这是利用MySQLINSERT ... ON DUPLICATE KEYS语法的好地方

为此,您只需要在column上创建一个唯一约束即可(cart_id, product_id)

ALTER TABLE mytable ADD CONSTRAINT my_table_constraint UNIQUE (cart_id, product_id);

请注意,要创建约束,现有数据必须符合要求(即,如果表中已经有重复项,则无法创建它,您需要先删除它们)。

现在,您可以使用followinq查询简化整个代码:

INSERT INTO mytable
    (cart_id, product_id, attributes, quantity, added_on) 
    VALUES (:cart, :product_id, :attributes, 1, 1, NOW())
ON DUPLICATE KEYS UPDATE quantity = quantity + 1, buy_now = true 

如果您尝试在已经存在的(cart_id, product_id)元组上进行插入,则MySQL自动跳过该插入并执行ON DUPLICATE KEYS子句中描述的update命令

除了使您的代码更短,更简单之外,此语法的另一个好处是可以有效地保护您免受竞争条件的影响:使用您的现有代码,总是有可能两个同时运行的进程将插入重复的记录,而当使用上面的代码时,数据完整性由MySQL保证。

唯一的缺点是约束适用于表再次执行的所有操作,而不是局限于代码的特定部分。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MySql查询中的错误。“字段列表”中的未知列“”

来自分类Dev

MySQL错误#1054-“字段列表”中的未知列

来自分类Dev

mysql 更新错误 1054:“字段列表”中的未知列“x”

来自分类Dev

Mysql UPDATE 查询错误:“字段列表”中的未知列

来自分类Dev

MySQL:“字段列表”中的未知列

来自分类Dev

MySql:“字段列表”中的未知列ID

来自分类Dev

mysql,字段列表中的未知列

来自分类Dev

“字段列表”中的未知列 MySQL 异常

来自分类Dev

使用Python在mysql中插入时,显示错误消息“字段列表中的未知列”

来自分类Dev

错误 1054 (42S22):MySQL 中“字段列表”中的未知列“员工”

来自分类Dev

MySQL插入错误:ER_BAD_FIELD_ERROR:“字段列表”中的未知列“ 2525”

来自分类Dev

Mysql2 ::错误:“字段列表”中的未知列“ sum_hours”

来自分类Dev

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”错误中的未知列“nombre”?

来自分类Dev

Mysql2“字段列表”中的未知列“个人”

来自分类Dev

井字游戏在字段列表MySQL中的未知列“ i”

来自分类Dev

字段列表中的未知列(PHP + MySQL / PDO)

来自分类Dev

关于“字段列表”中不存在未知列的MYSQL错误1054(42S22)投诉

来自分类Dev

将数据库迁移到新服务器时,MySQL 错误字段列表中的未知列 (Windows)

来自分类Dev

转义 MySQL 中的保留字:“字段列表”中的未知列“密码”

来自分类Dev

“字段列表”中的未知列“..” - 将对象插入到 mySQL 中

来自分类Dev

MySQL中Clouse的未知列错误

来自分类Dev

ActiveRecord :: StatementInvalid:Mysql :: Error:“字段列表” Ruby灯具中的未知列“ user_id”

来自分类Dev

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ CONTACTID”

来自分类Dev

在mysql中使用“插入”,#1054-字段列表中的未知列

来自分类Dev

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ Knight”

来自分类Dev

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ JDODETACHEDSTATE”

来自分类Dev

内部异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:“字段列表”中的“名称”列未知

来自分类Dev

MySql.Data.MySqlClient.MySqlException: '字段列表'中的'未知列'Cantidad'

来自分类Dev

MySQL 更新语句:“字段列表”中的“表”未知

Related 相关文章

  1. 1

    MySql查询中的错误。“字段列表”中的未知列“”

  2. 2

    MySQL错误#1054-“字段列表”中的未知列

  3. 3

    mysql 更新错误 1054:“字段列表”中的未知列“x”

  4. 4

    Mysql UPDATE 查询错误:“字段列表”中的未知列

  5. 5

    MySQL:“字段列表”中的未知列

  6. 6

    MySql:“字段列表”中的未知列ID

  7. 7

    mysql,字段列表中的未知列

  8. 8

    “字段列表”中的未知列 MySQL 异常

  9. 9

    使用Python在mysql中插入时,显示错误消息“字段列表中的未知列”

  10. 10

    错误 1054 (42S22):MySQL 中“字段列表”中的未知列“员工”

  11. 11

    MySQL插入错误:ER_BAD_FIELD_ERROR:“字段列表”中的未知列“ 2525”

  12. 12

    Mysql2 ::错误:“字段列表”中的未知列“ sum_hours”

  13. 13

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”错误中的未知列“nombre”?

  14. 14

    Mysql2“字段列表”中的未知列“个人”

  15. 15

    井字游戏在字段列表MySQL中的未知列“ i”

  16. 16

    字段列表中的未知列(PHP + MySQL / PDO)

  17. 17

    关于“字段列表”中不存在未知列的MYSQL错误1054(42S22)投诉

  18. 18

    将数据库迁移到新服务器时,MySQL 错误字段列表中的未知列 (Windows)

  19. 19

    转义 MySQL 中的保留字:“字段列表”中的未知列“密码”

  20. 20

    “字段列表”中的未知列“..” - 将对象插入到 mySQL 中

  21. 21

    MySQL中Clouse的未知列错误

  22. 22

    ActiveRecord :: StatementInvalid:Mysql :: Error:“字段列表” Ruby灯具中的未知列“ user_id”

  23. 23

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ CONTACTID”

  24. 24

    在mysql中使用“插入”,#1054-字段列表中的未知列

  25. 25

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ Knight”

  26. 26

    com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:“字段列表”中的未知列“ JDODETACHEDSTATE”

  27. 27

    内部异常:com.mysql.jdbc.exceptions.MySQLSyntaxErrorException:“字段列表”中的“名称”列未知

  28. 28

    MySql.Data.MySqlClient.MySqlException: '字段列表'中的'未知列'Cantidad'

  29. 29

    MySQL 更新语句:“字段列表”中的“表”未知

热门标签

归档