我对mySQL非常陌生,请耐心等待。
我有一个总是在增长的数组,现在可以说它有4个项目。我需要sql来搜索表并为数组中的每个项插入一个新行,但前提是它是一个新项(意味着它尚未插入)。表中有5列,行中的每个项都需要是变量,因此我可以传递动态数据。
我知道这很遥远,但我现在拥有的是这样的。
$array_count = array(1,2,3,4);
$var1 = 'value 1';
$var2 = 'value 2';
$var3 = 'value 3';
$var4 = 'value 4';
$var5 = 'value 5';
$sql = "INSERT INTO membership_levels VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')";
答案 0 :(得分:4)
如果您的数据库是MySql,您可以像Brad Christie一样使用Insert On Duplicate编写。如果只想在它们全部具有相同值时插入,则需要在5列上有一个主键。
您的$ sql将更改为:
$sql = "INSERT INTO membership_levels(a,b,c,d) VALUES VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')
ON DUPLICATE KEY UPDATE a=VALUES(a), b=VALUES(b), c = VALUES(c), d = VALUES (d);"
您也可以使用Replace key word。如果该行存在,它将为您删除它并插入新行。
$sql = "REPLACE INTO membership_levels VALUES ('".$var1."', '".$var2."', '".$var3."', '".$var4."', '".$var5."')";
如果您的数据库是MsSql(Sql server),则它是2个查询:
IF EXISTS (SELECT * FROM Table1 WHERE Column1='SomeValue')
UPDATE Table1 SET (...) WHERE Column1='SomeValue'
ELSE
INSERT INTO Table1 VALUES (...)"
如果SQL Server使用存储过程,最好的方法。
答案 1 :(得分:0)
答案 2 :(得分:0)
请看一下我认为可以回答您问题的这篇文章:http://www.xaprb.com/blog/2005/09/25/insert-if-not-exists-queries-in-mysql/
它显示了编写SQL查询的几种可能方法,以克服缺少“IF NOT EXISTS”语法。请注意,如果您使用的是SQL Server,则可以编写IF NOT EXISTS。