Php Mysqli更新查询不';行不通
因此,我试图构建一种更新电子邮件功能,应该将其放入数据库的部分如下所示Php Mysqli更新查询不';行不通,php,mysql,mysqli,Php,Mysql,Mysqli,因此,我试图构建一种更新电子邮件功能,应该将其放入数据库的部分如下所示 <?php $emailfrom = $_POST['emailfrom']; $emailto = $_POST['emailto']; $query = sprintf('UPDATE `users` SET `email`="%s" WHERE `email`="%s"`', mysqli_real_escape_string($db, $emailfrom),
<?php $emailfrom = $_POST['emailfrom'];
$emailto = $_POST['emailto'];
$query = sprintf('UPDATE `users` SET `email`="%s" WHERE `email`="%s"`',
mysqli_real_escape_string($db, $emailfrom),
mysqli_real_escape_string($db, $emailto));
mysqli_query($db, $query);
查询中出现语法错误
\/
$query = sprintf('UPDATE `users` SET `email`= "%s" WHERE `email`= "%s"`',
mysqli_real_escape_string($db, $emailfrom),
mysqli_real_escape_string($db, $emailto));
mysqli_query($db, $query);
此外,您可能希望将电子邮件从emailFrom更改为emailTo,现在您正以另一种方式进行更改。编辑后:
$query = sprintf('UPDATE `users` SET `email`= "%s" WHERE `email`= "%s"`',
mysqli_real_escape_string($db, $emailto),
mysqli_real_escape_string($db, $emailfrom));
mysqli_query($db, $query);
被接受的答案会起作用,但事先准备好的声明会安全得多
$query="UPDATE `users` SET `email`= ? WHERE `email`= ?";
$stmt = $db->prepare($query);
$stmt->bind_param('ss',$_POST['emailfrom'],$_POST['emailto']);
$stmt->execute();
$stmt->close();
使用预先准备好的语句,您不必担心转义变量以防止SQL注入。不,仍然不起作用,而且电子邮件的错误到底是什么
字符串末尾还有额外的`。将email
=“%s”`更改为email
=“%s”,现在语法正确了。我编辑了我的答案,如果我是正确的,您正在以相反的方式更新您的行。否则我就不知道为什么你的查询不起作用了,因为语法还可以,你发布的代码也可以。尝试使用错误报告进行调试。这就成功了!万分感谢,我现在觉得自己很傻,当你这么说的时候,这是很明显的…哈哈,别担心,疲劳的人常犯的错误:)很高兴你得到了它。