从 PHP 查询 MySQL 错误:如果存在

Posted

技术标签:

【中文标题】从 PHP 查询 MySQL 错误:如果存在【英文标题】:MySQL Error querying from PHP: IF EXISTS 【发布时间】:2012-03-05 10:58:42 【问题描述】:

我有这个带有查询 mysql 数据库的 php 代码:

$query2 = "IF( EXISTS (SELECT * FROM shipcargo WHERE shipid='$shipid' AND item='$item' AND price='$price')) 
    BEGIN
    UPDATE shipcargo SET amount = amount+'$amount' WHERE shipid='$shipid' AND item='$item' AND price='$price'
    END
    ELSE
    BEGIN
    INSERT INTO shipcargo (shipid, item, amount, price) VALUES('$shipid', '$item', '$amount', '$price')
    END";
    mysql_query($query2) or die(mysql_error());

返回的错误是:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'IF( EXISTS (SELECT * FROM shipcargo WHERE shipid='11' AND item='WheatBastard' AN' 附近使用正确的语法

【问题讨论】:

PHP 不会触发 SQL 错误。您必须检查 $query2 包含的确切内容,看看它是否是有效的 SQL 代码。 【参考方案1】:

语法错误!看看http://dev.mysql.com/doc/refman/5.0/en/exists-and-not-exists-subqueries.html

【讨论】:

【参考方案2】:

我相信是的

IF EXISTS (SELECT * FROM

而不是

IF (EXISTS ( SELECT

IF 语句不需要括号

【讨论】:

以上是关于从 PHP 查询 MySQL 错误:如果存在的主要内容,如果未能解决你的问题,请参考以下文章

已经存在数据查询并绕过php mysql中的新条目

PHP MySQL:如果API数据中不存在则删除行

如果记录已经存在或者在 PDO MySQL 插入查询中不存在,如何生成 javascript 警报?

使用 sqitch 中的 mysql 查询验证表不存在

MySql - 如果表存在,只更新一些行 - 不希望抛出错误

php操作MySQL数据库判断多个数据表是不是存在,不存在就创建要怎么写呢