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

时间:2013-11-05 22:21:50

标签: php mysql sql

我从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);
?>

注意:该表名为“公司”

3 个答案:

答案 0 :(得分:1)

尝试复制键...

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

答案 1 :(得分:0)

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

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

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

一般情况下,我建议您使用一些自动递增的数字字段作为唯一ID。这是数据库设计中的常见做法,也是(好几个)充分理由。如果您向表中添加名为AUTO_INCREMENT的{​​{1}}字段,则可以执行

id

然后检查是否得到一个空的结果集。如果没有,请使用该ID( $query = mysql_query("SELECT id FROM companies WHERE `permalink` = '" . $result['permalink'] . "'"); )执行UPDATE,否则执行UPDATE ... WHERE id = $id

顺便说一下,检查INSERT的语法,它不像INSERT那样使用SET

最后,我不知道你是如何构建UPDATE的,但请使用mysql_escape_string来阻止SQL注入,如果你还没有这样做的话。

答案 2 :(得分:0)

相关问题