我正在尝试做一些相当复杂的事情,但我希望它在文本中有意义。
所以我在一个页面上有一个链接 post.php?postid=3
在我的数据库中有一个整型字段,叫做 camp_id
. 例如,当我在一个具有值为1的camp\u id字段的帖子上时,我想显示表中该字段中值为1的所有内容。
如果我把网址改成 post.php?postid=2
那篇文章有一个 camp_id
比如说4,我会显示一个所有camp\u id为4的东西的列表。
不管怎样,下面是我的代码,下面是当前的错误。
我的职责是:
public function getartfromcamp($campid)
{
$con = $this->db->OpenCon();
$campid = $con->real_escape_string($campid);
$stmt = "SELECT * from post WHERE camp_id = '$campid'";
$relatedlinks = $con->query($stmt);
if ($relatedlinks->num_rows > 1) {
$sql = $relatedlinks;
} else {
$sql = "No article";
echo "";
}
$this->db->CloseCon();
return $sql;
}
页面上的代码如下:
include 'postclass.php';
$postid = $_GET['postid'];
$article = new Post();
$relatedlinks = $article->getartfromcamp($postid);
?>
<div class='row'>
<?php
while ($row = $relatedlinks->fetch_assoc()) {
?>
<ul>
<ul>
<li><a href="postview.php?postid=<?php echo $row['article_id'];?>"><?php echo $row['article_name'];?></a></li>
</ul>
它似乎与postid=1一起工作,但当我将其更改为其他内容时,会出现以下错误:
致命错误:未捕获错误:对c:\inetpub\wwwroot\local.test.co.uk\blog example\camp1中的字符串调用成员函数fetch\u assoc()。php:18 stack trace:#0{main}在第18行的c:\inetpub\wwwroot\local.test.co.uk\blog example\camp1.php中抛出
第18行:
while ($row = $relatedlinks->fetch_assoc()) {
1条答案
按热度按时间v2g6jxz61#
在功能上
getartfromcamp
,你回来了$sql
字符串,而不是连接对象,当没有结果时。在这种特殊情况下,没有结果,因此返回字符串。所以它抛出错误,当你试图运行
fetch_assoc
在一根绳子上。您应该让函数只返回连接对象,即使没有返回任何行。更改为:
sidenote:you should 切换到准备好的语句,以防止sql注入相关的问题。