Php 如何解决警告:mysql\u fetch\u array()希望参数1是资源,给定布尔值

Php 如何解决警告:mysql\u fetch\u array()希望参数1是资源,给定布尔值,php,Php,我有我的代码,它给了我以下的eror 警告:mysql\u fetch\u array()希望参数1是资源,布尔值在第28行的C:\wamp\www\jopasy\u community\u 2.2\includes\view.php中给出 下面是代码 <?php include 'connection.php'; $con = mysql_connect($host,$user,$pwd); $db = mysql_select_db($database);

我有我的代码,它给了我以下的eror

警告:mysql\u fetch\u array()希望参数1是资源,布尔值在第28行的C:\wamp\www\jopasy\u community\u 2.2\includes\view.php中给出

下面是代码

<?php
    include 'connection.php';
    $con = mysql_connect($host,$user,$pwd);
    $db = mysql_select_db($database);

    include 'create_tables.php';

    $sql = 'SELECT name, qntitle, question  FROM questions';

    $retval = mysql_query( $sql, $con );
    if(! $retval )
    {
      die('Could not get data: ' . mysql_error());
    }
    while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    {
    $qnabout=$row['qntitle'];

        echo "<b>Question: </b>{$row['question']} <br>".
         "<b>Asked by : </b> {$row['name']} <br> ".
         "<b>Question about: </b> {$row['qntitle']} <br><br> ".

         "<b>Answers</b> <br><br> ".

        $getanswer = ("SELECT answerdby, answer FROM answers WHERE qntitle ='".$qnabout."';");
        $answer = mysql_query( $getanswer, $con );

        while($ans = mysql_fetch_array($answer, MYSQL_ASSOC)) //This is the line witherror
        {
         echo "Answer : {$ans['answer']} <br> ".
         "<b>Answered by : </b> {$ans['answerdby']} <br> ".
         "--------------------------------<br><br><br><hr>";
        }

    } 
    mysql_close($con);

?>

您是否检查了查询是否返回结果?如果是

替换:

while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
与:


更新

再次看了你的问题后,我想到了几件事:

  • 您正在使用MySQL(已弃用,请切换到MySQLi或PDO)
  • 查询中的查询
因此,我得出以下结论。试试这个:

<?php

// Connect
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

// Load Questions
$questions = array();
if ($result = $mysqli->query("SELECT name, qntitle, question FROM questions"))
{
    while ($row = $result->fetch_assoc())
        $questions[] = $row;

    $result->free();
}

// Load Answers
$answers = array();
foreach ($questions as $question)
{
    $qnabout = $question['qntitle'];
    if ($stmt = $mysqli->prepare("SELECT answerdby, answer FROM answers WHERE qntitle = ?"))
    {
        $stmt->bind_param("s", $qnabout);
        $stmt->execute();
        $result = $stmt->get_result();

        while ($row = $result->fetch_assoc())
            $answers[$qnabout][] = $row;

        $stmt->close();
    }
}

// Close Connection
$mysqli->close();

// Display Results
foreach ($questions as $question)
{
    echo "<b>Question: </b>{$question['question']} <br>".
         "<b>Asked by : </b> {$question['name']} <br> ".
         "<b>Question about: </b> {$question['qntitle']} <br><br> ".
         "<b>Answers</b> <br><br> ";

    foreach ($answers[$question['qntitle']] as $answer)
    {
        echo "Answer : {$answer['answer']} <br> ".
             "<b>Answered by : </b> {$answer['answerdby']} <br> ".
             "--------------------------------<br><br><br><hr>";
    }
}

由于查询出错,
$answer
包含布尔值。检查var\u dump(mysql\u error($con))
中的错误。 另外,
mysql.*
函数也不推荐使用。改用mysqli或PDO


相关问题:

不要使用
mysql.*
api,它已被弃用且不好。改用
PDO
Mysqli
。(这与问题无关,而是一项一般性建议)
<?php

// Connect
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_database");
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

// Load Questions
$questions = array();
if ($result = $mysqli->query("SELECT name, qntitle, question FROM questions"))
{
    while ($row = $result->fetch_assoc())
        $questions[] = $row;

    $result->free();
}

// Load Answers
$answers = array();
foreach ($questions as $question)
{
    $qnabout = $question['qntitle'];
    if ($stmt = $mysqli->prepare("SELECT answerdby, answer FROM answers WHERE qntitle = ?"))
    {
        $stmt->bind_param("s", $qnabout);
        $stmt->execute();
        $result = $stmt->get_result();

        while ($row = $result->fetch_assoc())
            $answers[$qnabout][] = $row;

        $stmt->close();
    }
}

// Close Connection
$mysqli->close();

// Display Results
foreach ($questions as $question)
{
    echo "<b>Question: </b>{$question['question']} <br>".
         "<b>Asked by : </b> {$question['name']} <br> ".
         "<b>Question about: </b> {$question['qntitle']} <br><br> ".
         "<b>Answers</b> <br><br> ";

    foreach ($answers[$question['qntitle']] as $answer)
    {
        echo "Answer : {$answer['answer']} <br> ".
             "<b>Answered by : </b> {$answer['answerdby']} <br> ".
             "--------------------------------<br><br><br><hr>";
    }
}