什么会导致传递给mysql_fetch_object()的资源无效?

时间:2012-09-06 06:33:18

标签: php warnings fetch

我在php中收到如下警告

  

警告:mysql_fetch_object():提供的参数不是第16行E:\ Program Files \ VertrigoSer \ www \ b.php中的有效MySQL结果资源

我的节目是:

<?php
$connection=mysql_connect("localhost","root","vertrigo");
$db=mysql_select_db("mydb",$connection);

$query="INSERT INTO text VALUES(1003,'PHP','Mcgrowhill','Ivan')";
$r=mysql_query($query);

$query="INSERT INTO book VALUES(201,3,1003)";
$r=mysql_query($query);

$query1="select distinct title from text,book,course where text.isbn=book.isbn and book.cno=course.cno and course.dept='CS'";
$r=mysql_query($query1);

echo"row inserted";

while($row=mysql_fetch_object($r))
{
    echo $row->title;
}

mysql_close($connection);
?>

请提出如何解决此问题的建议

4 个答案:

答案 0 :(得分:2)

如果SQL查询未返回任何结果,则可能会触发此警告。 在执行以下操作之前,

$r=mysql_query($query1);

检查返回的行数是否为&gt; 0具有mysql_num_rows功能。还要直接检查您的查询,看它是否有效。

停止使用MySQL扩展,不鼓励使用。使用PDOMySQLi

答案 1 :(得分:1)

以下是您可以找到的方法:

$query = "INSERT INTO text VALUES(1003,'PHP','Mcgrowhill','Ivan')";
$r = mysql_query($query);
if (!$r) {
    echo mysql_error();
}

$query = "INSERT INTO book VALUES(201,3,1003)";
$r = mysql_query($query);
if (!$r) {
    echo mysql_error();
}

$query1 = "select distinct title from text, book, course where text.isbn = book.isbn and book.cno = course.cno and course.dept = 'CS'";
$r = mysql_query($query1);
if (!$r) {
    echo mysql_error();
} else {
    echo"row inserted";

    while($row = mysql_fetch_object($r)) {
        echo $row->title;
    }
}

mysql_close($connection); ?>

答案 2 :(得分:1)

文字是mysql的保留字,所以请使用别名并尝试

喜欢

$query1="select distinct title from text as t,book as b,course as c where t.isbn=b.isbn and b.cno=c.cno and c.dept='CS'";

答案 3 :(得分:0)

你可以使用这样的东西。

error_reporting(E_ERROR | E_PARSE);

if (!$result)
   die("mySQL error: ". mysql_error()); 
相关问题