【问题标题】:php mysql update query having troublephp mysql更新查询有问题
【发布时间】:2016-01-28 15:05:39
【问题描述】:

更新查询不适用于 GET

$key = mysql_real_escape_string($_GET['key']) ;
$pass = mysql_real_escape_string(trim($_POST['pass'])) ;

$key1="UPDATE login SET pass = '" . $pass . "' WHERE 
                                        (key_id = '" . $key . "')";

变量是这样传递的newpassword.php?key=5384f

回显 $key;变量不产生任何结果?有什么问题?

由于某种原因,它正在更新所有其他密码,除了存在密钥的密码。

【问题讨论】:

  • 尝试删除 WHERE 子句中的 () 并且请不要使用 mysql_* 函数,它们在 PHP 7 中被删除了!!
  • 基本调试:您是否尝试echo $key1 来查看您生成的查询是什么样的?永远不要假设你的 sql 语法是正确的,或者查询成功了。
  • stop using mysql_* functionsThese extensions 已在 PHP 7 中删除。了解PDOMySQLiprepared 语句并考虑使用 PDO,it's really pretty easy
  • 请使用 PHP 的built-in functions 来处理密码安全问题。如果您使用的 PHP 版本低于 5.5,则可以使用 password_hash() compatibility pack
  • @Daan:呃,完全错误。您可以在 POST 请求中包含查询(又名 GET)变量。但是,如果通过 get 获取 url,则不能有 POST 数据。

标签: php mysql get sql-update


【解决方案1】:

这是一个愚蠢的错误,我发现了错误;我正在使用 <?php echo $_SERVER['PHP_SELF']?> 发布到同一页面。发布到页面后,我尝试使用 get 检索密钥,然后尝试使用它运行更新查询。这不起作用,因为发布后 url 将更改并且密钥将消失。

解决方案是先捕获键值并将其作为不可见文本项存储到表单中,然后将其发布以进行更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-21
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 2012-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多