mysqli_fetch_array()期望参数1为mysqli_result,给定整数

时间:2017-12-12 13:04:42

标签: php

我试过下面的代码。我用php mysql和ajex开发了这个系统。 $ id = $ _GET [' country']; 这个国家/地区值显示成功,但mysqli_fetch_array有错误可以解决这个问题我收到错误消息我粘贴在标题中。 感谢

 <?php
            if(isset($_GET['country']) && !empty($_GET['country']))
            {
                $con = mysqli_connect("localhost","root","","ganudenunew");

                $id = $_GET['country'];

                $query = "select name from city where d_id = '$id'";


                $da = mysqli_query($con,$query);
                $co = mysqli_num_rows($da);

                while($row = mysqli_fetch_array($co)) 
                    echo '<option value="'.$row['c_id'].'" >'.$row['name'].'</option>';

            }


    ?>

2 个答案:

答案 0 :(得分:2)

$co = mysqli_num_rows($da);

这是总行数,但您需要全部获取数据

只需更改

while($row = mysqli_fetch_array($co)) 

while($row = mysqli_fetch_array($da))

<强> 1。需要选择c_id

所以这是最终代码

首先更新sql以便更新它

$query = "select name from city where d_id = '$id'";

$query = "select name,c_id from city where d_id = '$id'";

然后这是while循环代码

while($row = mysqli_fetch_array($da)) 
 {
      echo '<option value="' . $row['c_id'] . '" >' . $row['name'] . '</option>';
 } 

答案 1 :(得分:0)

原因: - $co包含结果集对象$da中存在的记录数,而不是记录本身。

<强> 解决方案: -

变化: -

while($row = mysqli_fetch_array($co)) 

要: -

while($row = mysqli_fetch_array($da)) 

除了像这样更改查询: -

$query = "select name,c_id from city where d_id = '$id'";

你很高兴。

重要提示: - 您的查询对SQL INJECTION是有效的。请阅读prepared statements并使用它们。

参考: - mysqli::prepare