在从数组添加到数据库之前检查SQL条目是否存在

时间:2017-07-31 21:26:06

标签: php mysql arrays

数组$sql中的值正被添加到数据库$safe_id中。 $sql从数组$list获取其值,其中包含来自网站的已爬网动态标题和价格信息。以下是$list的一些示例数据:

[0]=> array(2) {
    ["title"]=> string(53) "Axe Heaven Miniatuur gitaar | Vintage Sunburst Finish"
    ["price"]=> string(10) "€ 31,50"}
[1]=> array(2) {
    ["title"]=> string(59) "Axe Heaven Miniatuur gitaar | Neil Young Vintage Distressed"
    ["price"]=> string(10) "€ 31,50" } 

添加到数据库工作。但是,每次运行脚本时,都会添加所有数据而不检查重复项,从而导致大量重复条目。我正在尝试使用变量$exists检查表中是否存在数据。目标是仅在表不存在时将数据添加到表中。任何人都可以对此有所了解吗?

 $sql = array();

 foreach($list as $row) {

   $title = mysqli_real_escape_string($con,$row['title']);
   $price = mysqli_real_escape_string($con,$row['price']);

     $exists = mysqli_query($con, "SELECT title FROM $safe_id WHERE title = '$title'");
     $doesexists = $exists->fetch_object()->title;

       if(!$doesexists) {
         $sql[] = '("'.$title.'" , "'.$price.'")';
       }
 }

mysqli_query($con, "INSERT INTO $safe_id (title, price) VALUES ".implode(',', $sql));

1 个答案:

答案 0 :(得分:0)

在数据库中创建主/唯一键并使用INSERT ... ON DUPLICATE KEY UPDATE OR INSERT IGNORE INTO TABLE语法:

  1. 在phpmyadmin中,在列title
  2. 上创建唯一索引
  3. 在您的php脚本中,使用以新价格更新现有记录的查询,或者只是完全忽略Insert语句