2012-12-18 46 views
-2
$idno = $_GET['id']; 
$identity = $idno; 
$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'"); 

while ($row = mysql_fetch_array($result)) 
{ 
    ... 
} 

$resu = mysql_query("SELECT * FROM comment WHERE id='$identity'"); 
while ($row = mysql_fetch_array($resu)) 
{ 
    ... 
} 

我得到错误这样类型:我可以在单个php块中使用fetch_array()两次吗?

警告:mysql_fetch_array()预计参数1是在C中给出资源, 布尔:\ XAMPP \ htdocs中\校友会\ blog_written.php上 线95

+0

你能告诉我们什么代码是循环内?也许你在循环中使用$ row或$ resu并覆盖它? – Moseleyi

+0

这应该不是问题,问题是查询可能返回了一个错误,并且您没有错误处理。作为旁注,您应该使用PDO或mysqli。 – adeneo

+0

**警告!**您的代码包含一个[SQL注入漏洞](http://en.wikipedia.org/wiki/SQL_injection) - 您将原始未过滤未经验证的用户输入直接传递到SQL字符串中。请[切换到PDO](http://php.net/book.pdo)或[mysqli](http://php.net/book.mysqli),以便您可以使用[带有参数化查询的预准备语句](http: //en.wikipedia.org/wiki/Prepared_statement)。 – Charles

回答

2

警告:mysql_fetch_array()预计参数1是资源,布尔给出

此错误意味着您的查询由于某种原因失败。失败时,mysql_query()返回false。它通常是由于语法错误,缺少字段/表或与数据库没有连接。

您应该测试查询失败,让你永远传递一个布尔值mysql_fetch_array()

$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'"); 

if($result) 
{ 
    while ($row = mysql_fetch_array($result)) 
    { 
     ... 
    } 
} 
else 
{ 
    // query failed - see mysql_error() 
} 

有具有多个fetch_*电话的同一页面上,只要没有问题,因为你使用的是不同的结果资源(否则每次都会将指针向前移动)。

附注:mysql_*已弃用,建议升级至MySQLi或PDO。您的代码容易受到SQL注入的影响,请使用参数化查询,而不是手动在查询中插入变量。

0

检查数据库连接,然后mysql错误。

$result = mysql_query("SELECT * FROM bloggings WHERE id ='$idno'"); 
if (!$result) { // add this check. 
    die('Invalid query: ' . mysql_error()); 
} 
0

您是否创建了数据库连接?如果是,请检查连接。并且只有在连接返回true时才尝试运行mysql_query()

相关问题