Mysqli更新查询不起作用

时间:2015-06-06 12:01:19

标签: php mysql mysqli

所以我正在尝试构建一种更新电子邮件功能,应该将它放入db的部分看起来像这样

<?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);    

问题是该行没有更新......我需要帮助才能知道为什么,因为我对mysql不太熟悉,主要使用其他dbs

2 个答案:

答案 0 :(得分:1)

您的查询中出现语法错误。

                                                                     \/
$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); 

答案 1 :(得分:1)

接受的答案是有效的,但准备好的陈述会更安全

type

使用准备好的声明,您不必担心转义变量以防止SQL注入。