【发布时间】:2014-01-07 16:13:33
【问题描述】:
第一次在这里发帖。
我对使用 php/mysql 非常陌生(第一天)。我已经设法编写了一些显示数据库中的值的东西,但是我在允许用户编辑该值时遇到了一些麻烦。我有一个表单,它显示数据库中的当前值(所有 varchars),然后允许他们编辑它,但是当我按下提交时,它只有在 sql 中使用的 cookie“用户名”包含一个数字时才会正确更新它当它是文本时......
mysqli_query($con,"UPDATE Customers SET password='".$_POST[password]."' WHERE email=$_COOKIE[username]");
如果 cookie[username] 包含 123,它将允许我正确更新与其相关的其他字段,例如“名称”/“地址”等
但是,如果 cookie[username] 包含任何文本,例如“hi”或“food123”,一旦按下提交,它将保持不变,我不确定为什么..
有谁知道出了什么问题以及为什么它适用于数字而不适用于文本?另外,我不介意您是否可以大大减少任何帮助,因为我会因任何复杂程度而迷失方向...如果您需要有关我的问题的任何其他信息,请告诉我,谢谢您的帮助。
【问题讨论】:
-
添加引号和正确的连接(如密码)。同时转义两个变量 - 更好的是,使用准备好的语句!
-
快速破解解决方案,在$_COOKIE[用户名]前后添加
\"。最佳实践(如 kingkero 所说)使用准备好的语句。