我做了一个数据库,其中存储了电子邮件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);
虽然我成功地获得了所有形式的值,直到和除非我把'where'子句。它的工作原理。但显然会更新所有值。我希望它的工作与哪里…,但到目前为止不成功:(
如果变量被引号 " 包围,则需要将{}放在变量周围
所以你的查询应该是这样的
$query = "UPDATE mytable SET name='{$name}',password='{$password}' WHERE emailid='{$email}'";
$result = mysqli_query($db,$query);
EDIT:在将数据保存到数据库之前,请确保对数据进行过滤和验证
您需要确保emailid
存在于mytable
中,您确实打算通过它进行过滤,并且在您的数据库方案中它具有支持发布数据的类型。似乎你正在发送字符串,如'foo@bar.lorem'
和你的emailid
是一个int
或数据库方案中的东西。运行
desc mytable;
如果你在变量周围使用撇号,你需要在变量周围加上花括号,但是作为风格的问题,我喜欢关闭字符串并将$variable
与.
连接起来,因为这种编码风格更接近我个人。
如果一切都失败了,看看生成了什么,通过回显查询字符串,尝试直接运行,看看错误是什么并修复直到…
…
此外,您没有加密密码,并且您的代码也容易受到SQL注入的攻击。请阅读密码加密和SQL注入,然后保护您的项目免受这些危险。
你可以这样写:
$query = "UPDATE mytable SET name=' ' .$name. ' ',password=' ' .$password. ' 'emailid ="。美元的电子邮件。";
使用。作为字符串连接操作符