php – 插入记录或如果存在则在mysql中更新不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – 插入记录或如果存在则在mysql中更新不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1633字,纯文字阅读大概需要3分钟。
内容图文
![php – 插入记录或如果存在则在mysql中更新不起作用](/upload/InfoBanner/zyjiaocheng/901/78eb18c46d4b4859bc9aeb8c580a51dd.jpg)
我希望如果一个记录不存在我添加它否则更新它…但它不起作用,这个代码是错的:
<?php
$user_id=$_POST['user_id'];
$user_email="user_email";
$last_stage=$_POST['last_stage'];
$score=$_POST['score'];
$note=$_POST['note'];
$con=mysqli_connect("localhost","ferfer","Drfrj","ferfw");
$result = mysqli_query($con,"SELECT user_email FROM rating WHERE user_email='".$user_email."'");
$num_rows = mysqli_num_rows($result);
if ($num_rows > 0) {
//echo "exist";
mysqli_query($con,"UPDATE rating SET user_id=".$user_id.", user_email='".$user_email."', last_stage=".$last_stage.", score=".$score.", note='".$note."' WHERE user_email='".$user_email."'";
mysqli_close($con);
}else{
//echo "does not exist";
mysqli_query($con,"INSERT INTO rating(user_id, user_email, last_stage, score, note)VALUES (".$user_id.",'".$user_email."',".$last_stage.",".$score.",'".$note."') ");
mysqli_close($con);
}
?>
解决方法:
你可以在一个查询中实际执行它,因为MySQL实现了INSERT … ON DUPLICATE KEY UPDATE,如果它不存在,它基本上会插入一条记录,否则更新它.
您需要做的第一件事是在表上添加一个UNIQUE列.在您的示例中,我看到user_email是您要搜索的列.如果这不是唯一的,则需要更改UNIQUE约束的表
ALTER TABLE rating ADD CONSTRAINT tb_uq UNIQUE(user_email)
在实现之后,构建一个这样的查询,
INSERT INTO rating(user_id, user_email, last_stage, score, note)
VALUES($user_id, '$user_email', last_stage, score, '$note')
ON DUPLICATE KEY UPDATE
user_id = $user_id,
last_stage = $last_stage,
score = $score,
note= '$note'
作为旁注,如果变量的值来自外部,则查询容易受到SQL Injection的影响.请查看下面的文章,了解如何防止它.通过使用PreparedStatements,您可以摆脱使用值周围的单引号.
> How to prevent SQL injection in PHP?
内容总结
以上是互联网集市为您收集整理的php – 插入记录或如果存在则在mysql中更新不起作用全部内容,希望文章能够帮你解决php – 插入记录或如果存在则在mysql中更新不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。