PHP:mysql_fetch_array()期望参数1是资源,给定布尔值

时间:2011-10-16 20:28:51

标签: php mysql parameters line forum

  

可能重复:
  MySQL & PHP Parameter 1 as Resource

我会在我的网站上的标题中显示,并且不会出现这样的错误,我也不知道如何解决这个问题。任何人都可以帮助我吗?

这是add_answer.php文件:

<?php
    include("mysql_forum_test.php"); // Get value of id that sent from hidden field
$id=$_POST['id'];

// Find highest answer number.
$sql="SELECT MAX(a_id) AS Maxa_id FROM $tbl_name WHERE question_id='$id'";
$result=mysql_query($sql);
$rows=mysql_fetch_array($result);

// add + 1 to highest answer number and keep it in variable name "$Max_id". if there no answer yet set it = 1
if ($rows) {
$Max_id = $rows['Maxa_id']+1;
}
else {
$Max_id = 1;
}

// get values that sent from form
$a_name=$_POST['a_name'];
$a_email=$_POST['a_email'];
$a_answer=$_POST['a_answer'];

$datetime=date("d/m/y H:i:s"); // create date and time

// Insert answer
$sql2="INSERT INTO $tbl_name(question_id, a_id, a_name, a_email, a_answer, a_datetime)VALUES('$id', '$Max_id', '$a_name', '$a_email', '$a_answer', '$datetime')";
$result2=mysql_query($sql2);

if($result2){
echo "Successful<BR>";
echo "<a href='index.php?content=view_topic?id=".$id."'>View your answer</a>";

// If added new answer, add value +1 in reply column
$tbl_name2="forum_question";
$sql3="UPDATE $tbl_name2 SET reply='$Max_id' WHERE id='$id'";
$result3=mysql_query($sql3);

}
else {
echo "ERROR";
}

mysql_close();
?>

由于

3 个答案:

答案 0 :(得分:4)

根据documentationmysql_query对查询错误返回FALSE。因此,您对mysql_fetch_array的参数是布尔值。使用mysql_error函数查看SELECT查询的错误。

例如,

$result=mysql_query($sql) or die(mysql_error());

答案 1 :(得分:1)

我怀疑你实际上没有启动数据库连接。这意味着mysql_query()失败并返回false,这是错误中描述的bool。

查看http://www.php.net/mysql_connect

答案 2 :(得分:1)

某种查询中一定有错误。

首先,我没有看到mysql_connect()。它可能在一个包含文件中。检查以确保连接没有错误(连接后mysql_error())。

您还可以查看:

if (!mysql_query($sql)) {
   echo mysql_error();
}

这将显示查询中的任何错误。

您还应该研究SQL注入和DB包装器(我建议使用PDO)。 PDO可以设置为在错误上抛出异常,因此您肯定会知道它们。