dongnuo6310 2015-03-02 08:14
浏览 8
已采纳

无法获取重复的行PHP

My code is running for first time perfectly (if & else condition), next time if i execute this code, it is not executing if conditon.Dont know why. Can someone have a look at this. Its is checking the hash value in DB if found do nothing else insert row, but it is duplicating rows.

$data = array();
foreach($objJson["statuses"] as $status) {
  $data[] = array("created_at" => $status["created_at"],"text" => $status["text"],"user_img" => $status["user"]["profile_image_url"],"from_user" => $status["user"]["screen_name"],"id" => $status["id"],"media_url" => $status["entities"]["media"][0]["media_url_https"],"hash" => md5($status["created_at"].$status["text"].$status["user"]["screen_name"]));

  $check2 = "SELECT hash FROM tweets where hash=".md5($status["created_at"].$status["text"].$status["user"]["screen_name"])." ";
  $res=mysqli_query($con,$check2);

  if (mysqli_num_rows($res)==1) {

  }
  else
  {
    $check = "INSERT INTO tweets (`created_at`,`text`,`user_img`,`from_user`,`media_url`,`hash`) 
VALUES('".$status["created_at"]."','".$status["text"]."','".$status["user"]["profile_image_url"]."','".$status["user"]["screen_name"]."','".$status["entities"]["media"][0]["media_url_https"]."','".md5($status["created_at"].$status["text"].$status["user"]["screen_name"])."')";
mysqli_query($con,$check);
  }
}
  • 写回答

2条回答 默认 最新

  • duanpi2033 2015-03-02 08:58
    关注

    Try this code. I improved the formatting and saw that quotes were missing around the hash, a minor problem:

    foreach($objJson["statuses"] as $status) {
      $hash   = md5($status["created_at"].$status["text"].$status["user"]["screen_name"]));
      $check  = "SELECT hash FROM tweets WHERE hash = '$hash'";
      $result = mysqli_query($con,$check);
      if (mysqli_num_rows($result) == 0) {
        $insert = "INSERT INTO tweets (created_at,text,user_img,from_user,media_url,hash) 
                   VALUES('".$status["created_at"]."','".
                             $status["text"]."','".
                             $status["user"]["profile_image_url"]."','".
                             $status["user"]["screen_name"]."','".
                             $status["entities"]["media"][0]["media_url_https"]."','".
                             $hash."')";
        mysqli_query($con,$insert);
      }
    }
    

    I also improved the structure of your code a bit.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog