我创建了一个数据库,其中存储了电子邮件ID和相应的名称和密码。我已成功获取表单的数据..用户输入更新的名称和密码。但问题出现在查询中,如下所示
$db = mysqli_connect(all details)...
$name = $_POST['name'];
$password = $_POST['password']:
$email = $_POST['email'];
$query = "UPDATE mytable SET name='$name',password='$password' WHERE emailid='$email'";
$result = mysqli_query($db,$query);
虽然我成功地获得了所有形式的价值,直到并且除非我把“'从句。它工作。但显然更新所有值。我希望它能在哪里工作..但到目前为止不成功:(
答案 0 :(得分:0)
如果变量被'
包围,则需要在变量周围添加 {}所以你的查询应该是这样的
$query = "UPDATE mytable SET name='{$name}',password='{$password}' WHERE emailid='{$email}'";
$result = mysqli_query($db,$query);
编辑:也在将数据保存到数据库之前确保过滤并验证数据
答案 1 :(得分:-1)
您需要确保emailid
中存在mytable
,您确实希望按此过滤,并且在您的数据库方案中,它具有支持发布数据的类型。您似乎正在发送字符串,例如'foo@bar.lorem'
,而您的emailid
是int
或数据库方案中的某些内容。通过运行
desc mytable;
如果你在它们周围使用撇号,你需要在变量周围加上大括号,但是作为一种风格问题,我喜欢关闭字符串并将$variable
附加.
,因为这种编码风格是亲自接近我。
如果一切都失败了,看看生成了什么,通过回显查询字符串,尝试直接运行,查看错误是什么并修复直到......
......直到它被修复。
此外,您不加密密码,您的代码也容易受到SQL注入攻击。请阅读password encryption和SQL injection,然后保护您的项目免受这些危险。