为什么这不起作用:

function listOrderComments ($factnr){
global $connection;

//$factnr = 123; //or $factnr = "123"; (Both work)

$query = "SELECT * FROM orderstatus WHERE factuurnummer = '$factnr'";
$result = mysqli_query($connection, $query);

当我回音时,我得到“123”。
当我取消注释$factnr时,我的函数正在工作。
到处寻找解决办法。检查类型//$factnr = 123;是(字符串)。

最佳答案

好吧,如果你在查询中使用了一个变量,那么你就为一个变量的注入攻击打开了大门。
如果您要使用该变量,我建议您在查询时使用bind_param
阅读下面的PHP手册链接,您将能够找出问题所在
http://php.net/manual/en/mysqli-stmt.bind-param.php
如果要将变量传递给函数,则应该已经设置了该变量,因此我不明白为什么要将其设置为123。因此,执行sql语句并按照PHP docs页面上的第一个示例绑定参数。

public function listOrderComments ($factnr)
{
   global $connection;
   $query = "SELECT * FROM orderstatus WHERE factuurnummer = ?";
   $sql->prepare($query);
   $sql->bind_param("s", $factnr);
   $sql->execute();
   $result = $sql->get_result();
   $data = mysqli_fetch_all($result, MYSQLI_ASSOC);

   foreach ($data as $row) {
        print_r($row);
   }
}

然后做你想做的事情

09-16 07:52