根据这篇文章(http://blogs.msdn.com/b/miah/archive/2008/02/17/sql-if-exists-update-else-insert.aspx)我想做这样的事情:
UPDATE chunks SET targets = CONCAT(targets, ",phpValue1")
WHERE scopeX=phpValue2 AND scopeY=phpValue3;
IF ROW_COUNT() = 0
INSERT INTO chunks (scopeX, scopeY, targets) VALUES (phpValue2,phpValue3,phpValue1)
但是后来我收到此错误:
您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 'IF ROW_COUNT() = 0 附近使用的正确语法 插入到块(作用域 X、作用域 Y、目标)
在条件之后我也尝试使用"THEN",但它也没有用。有趣的是,我认为我正在使用最新版本的XAMPP,当我正确查找时,它仍然使用MySQL 5.0。
确保 phpValue* 被 php 正确插入非常感谢您的任何帮助=)
你不能在没有函数的情况下使用像if
这样的控制语句。您必须将其放在函数,过程,触发器或事件中。
您引用了Microsoft篇有关MS SQL的文章,但您使用的是MySQL。它们是不同的语言,尽管它们有相似之处,但工作方式不同。
这种IF语句在MySQL中不起作用,但在MS SQL中可能很有效。
在 PHP 中:
$query = mysql_query ("select * from ...........");
$count = mysql_affected_rows();
在MySQL中,您需要在存储过程中执行此操作。以下是 FOUND_ROWS() 和 IF... 的基本结构。
DELIMITER $$
CREATE PROCEDURE `testproc`()
BEGIN
SET @INS = "SELECT * FROM yourschema.yourtable;";
PREPARE STMT FROM @INS;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
SET @i = FOUND_ROWS();
IF(@i > 0) THEN SELECT 1;
END IF;
END $$
DELIMITER ;