【问题标题】:I don't find any error.this code doing well.update my data perfectly.but 1 error is showing我没有发现任何错误。此代码运行良好。完美更新我的数据。但显示 1 个错误
【发布时间】:2017-04-26 00:08:50
【问题描述】:
if ($_SERVER["REQUEST_METHOD"]=="POST") {
            $updatedate=$_POST['date'];
            $updateday=$_POST['day'];
            $updateplace=$_POST['place'];
            $updatehighlight=$_POST['highlight'];
            $updatediscription=$_POST['discription'];
            $sqlupdate="UPDATE $tableselect SET entrydate='$updatedate',day='$updateday',place='$updateplace',highlight='$updatehighlight',discription='$updatediscription' WHERE id ='$getid'";
            $sqlquery=mysqli_query($db,$sqlupdate);
            if (!mysqli_query($db,$sqlquery)) {
                    echo "error " .$sqlquery. "<br>" . mysqli_error($db);
                }
        }

显示此错误:

您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的“1”附近使用的正确语法

【问题讨论】:

  • 逗号间距很奇怪
  • 那么$getid到底是从哪里来的呢?
  • 它仍然提供相同的按摩。
  • 警告:当使用mysqli 时,您应该使用parameterized queriesbind_param 将用户数据添加到您的查询中。 请勿使用字符串插值或连接来完成此操作,因为您创建了严重的SQL injection bug切勿$_POST$_GET任何用户数据直接放入查询中,如果有人试图利用您的错误,这可能会非常有害。
  • $getid 是我的行 id。它来到了另一个页面,用户单击以更新该行的数据。我回显它,我认为这个 id 结果很好..

标签: php mysql mysqli


【解决方案1】:

真的很简单,你运行了两次查询函数,这就是你得到1的原因。

所以

$sqlquery=mysqli_query($db,$sqlupdate);
            if (!mysqli_query($db,$sqlquery)) {...}

需要改为just

$sqlquery=mysqli_query($db,$sqlupdate);
            if(!$sqlquery){...}

第一个被执行,并且 (if)! 运算符也将触发查询函数,因为它为 TRUE,如“(if)not failed”。

“对于其他成功的查询,mysqli_query() 将返回 TRUE。”

也对您的查询进行参数化,您对 SQL 注入持开放态度。

【讨论】:

  • @chris85 是的,现在才看到。我对“关于 1”做了另一个轻微的编辑。
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 2018-12-09
相关资源
最近更新 更多