根据这篇文章(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附近使用正确的语法 INSERT INTO块(scopeX,scopeY,targets)
在条件之后我也尝试了“那么”,但它也没有用。 可能有趣的是,我正在使用最新版本的XAMPP,我认为,当我正确查找时,它仍使用MySQL 5.0。
肯定phpValue *是由php正确插入的 非常感谢你的任何帮助=)
答案 0 :(得分:1)
如果没有围绕它的函数,则不能使用if
之类的控制语句。你必须把它放在一个函数,过程,触发器或事件中。
答案 1 :(得分:0)
您正在引用有关MS SQL的Microsoft文章,但您正在使用MySQL。尽管它们有相似之处,但它们的工作方式不同。
这种IF语句在MySQL中不起作用,但可能在MS SQL中有效。
答案 2 :(得分:0)
在PHP中:
$query = mysql_query ("select * from ...........");
$count = mysql_affected_rows();
答案 3 :(得分:0)
在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 ;