检查 MySql 表中的条目,并使用 PHP 进行 UPDATE 或 INSERT



我正在从Crunchbase API中提取数据并添加到数据库中。

我不确定对于两家公司、人或其他公司来说,最好的唯一标识符是什么,但我认为永久链接可以用作 ID。

我的问题是我如何检查是否已添加条目,如果有,则更新/替换数据,如果永久链接不存在,则将下一行作为新实体添加到表中。

我当前的代码:

<?php
$query = mysql_query("SELECT * FROM companies");
$result = mysql_fetch_assoc($query);
$num = mysql_num_rows($query);
    if($num) // if the record exist, update it
    {
        mysql_query("UPDATE companies SET
            permalink='".$array['permalink']."',
            WHERE `permalink` = '" . $result['permalink'] . "'",$con);
    } 
    else{  
        mysql_query("INSERT into companies SET 
            permalink='".$array['permalink']."'",$con);
    }
    mysqli_close($con);
?>

注意:该表名为"公司"

尝试重复键...

mysql_query("INSERT INTO companies SET permalink='".$array['permalink']."' ON DUPLICATE KEY UPDATE permalink=permalink ;

找到唯一 ID 后,您可以使用它检查记录是否存在:

$query = mysql_query("SELECT COUNT(*) FROM companies WHERE `permalink` = '" . $result['permalink'] . "'");

请注意,我实际上也更改了SELECT *,因为如果您只想知道是否存在值,那么选择所有列的效率非常低。

通常,我建议您使用一些自动递增的数字字段作为唯一 ID。这是数据库设计中的常见做法,并且有(几个)充分的理由。如果将名为 idAUTO_INCREMENT字段添加到表中,则可以

    $query = mysql_query("SELECT id FROM companies WHERE `permalink` = '" . $result['permalink'] . "'");

然后检查是否得到一个空的结果集。如果没有,请使用该 ID ( UPDATE ... WHERE id = $id ) 执行UPDATE,否则,执行INSERT

顺便说一下,检查语法是否有INSERT,它没有像UPDATE那样使用SET

最后,我不知道您是如何构建$result["permalink"]的,但是如果您尚未这样做,请使用mysql_escape_string来防止SQL注入。

尝试重复键...从手册 http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

最新更新