我正在尝试创建一个简单的 api,它可以从移动应用程序向不同的新闻添加 View 。当我使用如下网址直接在浏览器中测试时:
http://url/addview.php?type=ios&identifier=35605C24-8EA6-4342-Bdfd-245432&newsid=147
如果 news_id、type 和 identifier 已经存在,它可以在这里工作并添加重复项。但是,当我在我的 ios 应用程序中通过异步 http 请求运行此 url 时,它似乎总是添加一条新记录,即使它已经存在于 d
$con = new mysqli('host','user','pass','db');
$type = $_GET['type'];
$identifier = $_GET['identifier'];
$news = $_GET['newsid'];
$check = $con->prepare("SELECT * FROM views WHERE views.news_id =? AND views.type =? AND views.identifier=?");
$check->bind_param("iss", $news, $type, $identifier);
$check->execute();
$check->store_result();
$check->fetch();
if ($check->num_rows == 0) {
$con->next_result();
$check->close();
$add_view = $con->prepare("INSERT INTO views (views.news_id, views.type, views.identifier, views.reg_date) VALUES (?, ?, ?, CURRENT_TIMESTAMP())");
$add_view->bind_param("iss", $news, $type, $identifier);
$add_view->execute();
$add_view->close();
$con->next_result();
}
$con->close();
最佳答案
如果您不想要重复项,请添加适当的唯一索引。根据您的逻辑,我认为这将是:
create unique index idx_views_3 on views(news_id, type, identifier);
然后,插入如下:
INSERT INTO views (news_id, type, identifier, reg_date)
VALUES (?, ?, ?, CURRENT_TIMESTAMP())
on duplicate key update news_id = values(news_id);
关于php - if语句不回避insert查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737015/