Php 如果ID不为';不存在

Php 如果ID不为';不存在,php,mysql,sql,insert,Php,Mysql,Sql,Insert,我试图将数据从一个表插入到另一个表,但前提是整行不存在 每一行都有一个自动递增的ID。我只是想检查一下ID,如果没有的话就插入这一行 我见过人们使用: INSERT IGNORE——我还没有看到关于它的明确解释 在重复密钥更新时插入-这并不理想,因为我不想更新任何现有行,我想插入新行 到目前为止,我编写的代码似乎不起作用: INSERT INTO $tableNameOrig o SELECT * FROM $tableNameTemp t WHERE NOT EXISTS(SELECT i

我试图将数据从一个表插入到另一个表,但前提是整行不存在

每一行都有一个自动递增的ID。我只是想检查一下ID,如果没有的话就插入这一行

我见过人们使用:

  • INSERT IGNORE
    ——我还没有看到关于它的明确解释
  • 在重复密钥更新时插入
    -这并不理想,因为我不想更新任何现有行,我想插入新行
到目前为止,我编写的代码似乎不起作用:

INSERT INTO $tableNameOrig o
SELECT * FROM $tableNameTemp t
WHERE NOT EXISTS(SELECT id FROM $tableNameOrig WHERE o.id=t.id);
有人知道我怎样才能做到这一点吗

谢谢你的时间,我已经绞尽脑汁好几个小时了

更新-已解决

结果是,没有为每个表名分配一个字母(o和t),而是在整个查询过程中使用表名:

INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp
WHERE NOT EXISTS(SELECT id FROM $tableNameOrig WHERE $tableNameOrig.id = $tableNameTemp.id); 
那是我肩上的重担

试试:

<?php
$con = mysql_connect("localhost","root","");
if (!$con)
{
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("my_db", $con);
$sql = "INSERT INTO contacts VALUES
(
    'SpongeBob','Squarepants','0415252522'
)";

// Execute query
if(mysql_query($sql,$con))
    echo "data inserted";
else
    echo "could not insert data";
////dis will allow to do it
或:


感谢您的快速响应,我自己解决了这个问题,在整个查询过程中将“o”和“t”替换为它们各自的表名!谢谢你的快速回复,但我恐怕看不出这是如何回答我的问题的。这个答案与这个问题有关系吗?
INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp t
WHERE NOT EXISTS (SELECT id FROM $tableNameOrig WHERE $tableNameOrig.id = t.id);
INSERT INTO $tableNameOrig
SELECT * FROM $tableNameTemp t
WHERE t.id NOT IN (SELECT id FROM $tableNameOrig);