PHP-警告:mysqli_fetch_array()

时间:2013-05-03 06:19:45

标签: php

php代码:

<?php

$name = $_GET['name'];
$type = $_GET['type'];
$desc = $_GET['desc'];


        $con=mysqli_connect("localhost","root","","projdb");

        // Check connection
        if (mysqli_connect_errno($con))
        {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        $res = mysqli_query($con,"SELECT * FROM __scannedfiles WHERE description LIKE '%$desc%' AND title='$name' AND doctype='$type' ");

        while($row = mysqli_fetch_array($res)){
            $path=$row[3];
            echo '<a target=\"_blank\" href="'.$path.'"   title=\"\">'.$path.'</a> ';
        }
?>

错误:

  

警告:mysqli_error()只需要1个参数,给定0。   这是错误。

5 个答案:

答案 0 :(得分:0)

这意味着您的查询失败(由于语法错误或连接错误)。你应该在传递之前验证它是否经历过,例如:

if($res) {
print "good job!";
}else {
print "error";
}

答案 1 :(得分:0)

这表示您的查询出错,请使用mysqli_error()查看查询中的错误

$res = mysqli_query($con,"SELECT * FROM __scannedfiles WHERE description LIKE '%$desc%' AND title='$name' AND doctype='$type' ")
OR die(mysqli_error());

答案 2 :(得分:0)

在将$res传递给mysqli_fetch_array之前检查if($res === FALSE) { die(mysql_error()); // TODO: better error handling } while($row = mysqli_fetch_array($res)){ $path=$row[3]; echo '<a target=\"_blank\" href="'.$path.'" title=\"\">'.$path.'</a> '; } 。您会发现它是错误的,因为查询失败了。

{{1}}

请参阅documentation

答案 3 :(得分:0)

它告诉您查询有问题。查询后执行此操作:

echo mysqli_error($con);

它会告诉您错误的位置。

答案 4 :(得分:0)

这意味着您的查询没有返回任何内容,或者有任何不适用的内容。首先调试查询

$res = mysqli_query($con,"SELECT * FROM __scannedfiles WHERE description LIKE '%$desc%' AND title='$name' AND doctype='$type' ") or die('Invalid query: ' . mysqli_error());

第二次检查行是否存在

if (mysqli_num_rows($res) > 0) {
   while($row = mysqli_fetch_array($res)){

如果您有sql injection的风险,请查看How can I prevent SQL injection in PHP?。您应该使用预备声明来避免任何风险