dongyihao9887 2012-09-17 19:30
浏览 53
已采纳

什么是跳过MySQL INSERT的正确方法

I have a foreach statement looping through JSON data and inserting the contents into MySQL. I want to skip the insert if a specific username is shown for $author string. Is the below method ok or is it better to handle at the database level?

foreach ($response['data'] as $data) {      
        $id = $data['id'];
        $created_time = $data['created_time'];
        $thumbnail = $data['images']['low_resolution']['url'];
        $author = $data['user']['username'];
        $caption = mysql_real_escape_string($data['caption']['text']);
        $link = $data['link'];
        $likes = $data['likes']['count'];

        if ($author == 'USERNAME') {
            mysql_close($con);
        } else {

        $query = "INSERT IGNORE INTO pbr (id, created_time, thumbnail, author, caption, link, likes, hash) VALUES ('$id', '$created_time', '$thumbnail', '$author', '$caption', '$link', '$likes', '$hash')";
        $result = mysql_query($query) or die(mysql_error());        

    mysql_close($con);
        }
    }
  • 写回答

1条回答 默认 最新

  • drfu80954 2012-09-17 19:33
    关注

    Why closing SQL connection at each loop iteration?

    Why not simply do:

    if ($author == 'USERNAME')
      continue; // next iteration
    
    $query = "INSERT IGNORE INTO pbr (id, created_time, thumbnail, author, caption, link, likes, hash)
      VALUES ('$id', '$created_time', '$thumbnail', '$author', '$caption', '$link', '$likes', '$hash')";
    $result = mysql_query($query) or die(mysql_error());
    

    BTW you should bind parameters to your queries, or at least use mysql_real_escape_string() otherwise will have problems with values containing quotes (currently, you only do it for variable $caption, I guess that $link, $thumbnail and $username can contain single quotes as well).

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
  • ¥15 C# datagridview 单元格显示进度及值
  • ¥15 thinkphp6配合social login单点登录问题
  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 虚心请教几个问题,小生先有礼了
  • ¥30 截图中的mathematics程序转换成matlab