为了将一些数据插入mysql,我使用:
$sql = "INSERT INTO MyGuests (fullname, email) VALUES ('John Doe', 'john@example.com')";
但在此之前,我希望,如果全名John Doe
已经在MyGuests表的查询中使用,那么它将随电子邮件更新。如果没有,那么数据将像上面一样正常插入。我怎么能那样做?非常感谢
只需使用mysql-num行检查行即可。使用下方的代码
$query = mysql_query("SELECT * FROM MyGuests WHERE fullname='John Doe'");
if(mysql_num_rows($query)==0){
mysql_query("INSERT INTO MyGuests (fullname, email) VALUES ('John Doe', 'john@example.com')");
}
else{
mysql_query("UPDATE MyGuests SET email='youremailname@name.com' WHERE fullname='John Doe'");
}
如果您使用的是mysqli_*函数,那么将mysql替换为mysqli。我没有使用prepared语句,您必须使用它们来停止sql注入。我建议您使用PDO或mysqli准备的语句来停止sql注入。希望tis能帮助您
您必须首先查询MySQL以检查是否已经有任何结果,如果已经有结果,则运行UPDATE查询而不是INSERT。
您可以这样使用on duplicate key update
:
INSERT INTO MyGuests (fullname, email) VALUES ('John Doe', 'john@example.com') ON DUPLICATE KEY UPDATE email='john@example.com';
要使其按预期工作,请确保fullname是主键。