为什么这不起作用:
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);
}
}
然后做你想做的事情