PHP、Mysqli、SQL查询以获取值并显示其他值
我试图做一些相当复杂的事情,但我希望它在文本中有意义 因此,我在一个页面上有一个链接,将我带到PHP、Mysqli、SQL查询以获取值并显示其他值,php,mysql,sql,mysqli,Php,Mysql,Sql,Mysqli,我试图做一些相当复杂的事情,但我希望它在文本中有意义 因此,我在一个页面上有一个链接,将我带到post.php?postid=3 在我的数据库中有一个名为camp\u id的整数字段。例如,当我在一个具有值为1的字段camp_id的帖子上时,我希望显示表中该字段中值为1的所有内容 如果我将URL更改为post.php?postid=2,并且该帖子的camp\u id为4,我将显示camp\u id为4的所有内容的列表 无论如何,下面是我的代码,下面是当前的错误 以下是我的功能: public f
post.php?postid=3
在我的数据库中有一个名为camp\u id
的整数字段。例如,当我在一个具有值为1的字段camp_id的帖子上时,我希望显示表中该字段中值为1的所有内容
如果我将URL更改为post.php?postid=2
,并且该帖子的camp\u 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>
在函数
getartfromcamp
中,当没有结果时,返回的是$sql
字符串,而不是连接对象
在这种特殊情况下,不会出现任何结果,因此将返回字符串。因此,当您试图对字符串运行fetch\u 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;
}
旁注:在函数getartfromcamp中,当没有结果时,返回的是$sql字符串,而不是db link。在这种特殊情况下,不会出现任何结果,因此将返回字符串。因此,当您试图在字符串上运行fetch_assoc时,它抛出了一个错误警告:当使用
mysqli
时,您应该使用and将用户数据添加到查询中。不要使用手动转义和字符串插值或串联来完成此操作,因为这样会创建严重的错误。意外未扫描的数据是一个严重的风险。使用绑定参数不太冗长,更容易检查是否正确执行。
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;
}