Php 如何解决警告:mysql\u fetch\u array()希望参数1是资源,给定布尔值
我有我的代码,它给了我以下的eror 警告:mysql\u fetch\u array()希望参数1是资源,布尔值在第28行的C:\wamp\www\jopasy\u community\u 2.2\includes\view.php中给出 下面是代码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);
<?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>";
}
}