我的代码第一次完美运行(如果& else条件),下次如果我执行此代码,如果conditon.Dont知道原因则不执行。有人可以看看这个。它正在检查DB中的哈希值,如果找不到其他任何插入行,但它是重复的行。
$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);
}
}
答案 0 :(得分:0)
尝试将检查行更改为:
$key = md5($status["created_at"].$status["text"].$status["user"]["screen_name"]);
$check2 = "SELECT hash FROM tweets where hash='".$key."'";
答案 1 :(得分:0)
试试这段代码。我改进了格式,看到哈希周围缺少引号,这是一个小问题:
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);
}
}
我还改进了代码的结构。