【问题标题】:PHP updating databasePHP 更新数据库
【发布时间】:2013-09-17 22:31:51
【问题描述】:

我在使用以下代码更新数据库时遇到问题。没有错误,而且我知道这不是数据库,因为我有另一个使用相同 &con 信息并从数据库返回数据的“GET”脚本。但是,数据库永远不会更新。

 <?php
    define("DB_DSN","xxx");
    define("DB_HOST","xxx");
    define("DB_USER","xxx");
    define("DB_PASS","xxx");

    $con = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die('Could not connect: ' .mysql_error());
    mysql_select_db(DB_DSN) or die('Could not select database');    
    $id = base64_decode($_POST["id"]);
    $deaths = base64_decode($_POST["deaths"]);
    $sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ;     
    $uresult = mysql_query($sql,$con);
    if(! $uresult )
    {
      die('Could not update data: ' . mysql_error());
    }
    echo "Updated data successfully\n";
    mysql_close($con);
    exit;

谁能帮忙??

【问题讨论】:

  • 您确定您的$_POST 变量符合您的预期吗?你确定它们是 Base64 编码的吗?
  • 将您的 UPDATE 语句更改为 "UPDATE Level01 SET Deaths ='" . $id . "' WHERE DeathID= '" . $deaths . "'";
  • 谢谢你们的帮助......问题解决了! :)
  • 你有一个 SQL 注入漏洞。

标签: php sql database post


【解决方案1】:

这个

"UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ;  

应该是

"UPDATE Level01 SET Deaths ='" . $deaths . "' WHERE DeathID= " . $id . " ;  

我认为。

【讨论】:

  • 就是这样!谢谢! :)
【解决方案2】:

基本上不使用变量插入这段代码:

mysql_query("UPDATE `Level1` SET `Deaths`= '".$deaths."' WHERE DeathID= ".$id.");

【讨论】:

  • 你有一个 SQL 注入漏洞。
【解决方案3】:
$sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ;

应该是

$sql = "UPDATE Level01 SET Deaths ='" . $deaths . "' WHERE DeathID= '" . $id . "'";

【讨论】:

  • 考虑到他使用双引号并尝试使用单引号连接,我会说它确实。
  • 就是这样!谢谢! :)
【解决方案4】:

首先尝试回显您的变量,您不需要'.$id。' (实际上应该是 '".$id."')你可以写 Deaths = '$id' 或者 Deaths = '$deaths' 应该是正确的。

【讨论】:

  • 感谢您的回复! :)
【解决方案5】:

我建议做echo $sql ; 然后你就会知道你的错误:)

点在这里被解释为字符而不是连接运算符,因此更新将更新每个具有 id ='.value.' 的 Death ,它在数据库中不存在,然后什么也没有发生。

替换这个:

$sql = "UPDATE Level01 SET Deaths =' . $id .' WHERE DeathID= ' . $deaths . '" ;

通过这个:

$sql = "UPDATE Level01 SET Deaths ='$id' WHERE DeathID= '$deaths'" ;

【讨论】:

  • 就是这样!谢谢! :)
  • @user2775839 请验证此答案,以便它可以在顶部看到并帮助其他人
【解决方案6】:

您好,请删除查询中的点,如下所示,它将解决问题。

$sql = "UPDATE Level01 SET Deaths ='$id' WHERE DeathID= '$deaths'" ;

【讨论】:

  • 就是这样!谢谢! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-28
  • 2018-03-24
  • 2013-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多