【问题标题】:Php/ sql update only working when the cookie is a number, not when it's textphp/sql 更新仅在 cookie 为数字时有效,而不是在文本时有效
【发布时间】: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 所说)使用准备好的语句。

标签: php mysql cookies


【解决方案1】:

也许这有帮助:

mysqli_query($con,"UPDATE Customers SET password='" . $_POST['password'] . "' WHERE email='" . $_COOKIE['username'] . "'");

我只是添加单引号,以便查询可以将 $_COOKIE[用户名] 读取为字符串,这样数字或文本都会被接受。

请记住,使用此代码,您的应用程序可能会受到SQL injection 的影响。

【讨论】:

    猜你喜欢
    • 2015-07-08
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2015-05-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多