php,mysqli,sql查询获取值并显示其他

qmelpv7a  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(569)

我正在尝试做一些相当复杂的事情,但我希望它在文本中有意义。
所以我在一个页面上有一个链接 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()) {
v2g6jxz6

v2g6jxz61#

在功能上 getartfromcamp ,你回来了 $sql 字符串,而不是连接对象,当没有结果时。
在这种特殊情况下,没有结果,因此返回字符串。所以它抛出错误,当你试图运行 fetch_assoc 在一根绳子上。您应该让函数只返回连接对象,即使没有返回任何行。
更改为:

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);

    $this->db->CloseCon();

    return $relatedlinks;
}

sidenote:you should 切换到准备好的语句,以防止sql注入相关的问题。

相关问题