我从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);
?>
注意:该表名为“公司”
答案 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)