得到致命的错误信息

时间:2013-01-10 00:23:37

标签: php mysqli

我在第二页上收到以下消息,但没有任何作用......

Fatal error: Call to a member function fetch_assoc() on a non-object in C:\xampp\htdocs\send.php on line 6

这是我显示电子邮件地址的第一页,它工作得很好但是当我点击电子邮件并转到info.php时我得到了错误..出了什么问题?

 <?php
 $mydb = new mysqli('localhost', 'root', '', 'database');
 $sql = "SELECT * FROM test ";
 $result = $mydb->query($sql);

 while( $row = $result->fetch_assoc() ){

 echo '<td><a href="info.php?email='.$row['Email'].'">'.$row['Email'].'</a>    </td>';

 echo "<br/>";
 }
 $mydb->close ();

 ?>

这里是info.php。请记住,我正在尝试在数据库的同一个表中显示单个用户的行年龄和名称。

<?php
$mydb = new mysqli('localhost', 'root', '', 'database');
$sql = "SELECT * FROM User WHERE id = " . $_GET['email'];
$result = $mydb->query($sql);

while( $row = $result->fetch_assoc() ){
echo $row['Age'] . " " . $row['Name'] ;
echo "<br/>";
}
$mydb->close (); 
?>

2 个答案:

答案 0 :(得分:2)

这意味着您的查询无法正常运行。你应该检查一下:

if (!$result) {
    echo $mydb->error;
}

die();

Prepared Statements

您应该使用它们,因为您正在接受用户输入。准备好的语句提供了良好的清理输入,因此用户不会弄乱您的数据库。

看起来您还有一个电子邮件列,但正在尝试根据以下内容选择用户:

id = email。

通常的做法是将id设为INT,并且电子邮件可能是VARCHAR,因此这种比较没有意义(如果您的表模式遵循常规做法)

答案 1 :(得分:1)

查询失败,因为您没有在电子邮件地址周围加上引号。

$sql = "SELECT * FROM User WHERE id = '" . $_GET['email'] . "'";