Я пытаюсь сделать что-то довольно сложное, но я надеюсь, что это имеет смысл в тексте.
Итак, у меня есть ссылка на странице, которая post.php?postid=3
меня post.php?postid=3
В моей базе данных есть поле aa, которое является целым числом, называемым camp_id
. Когда, например, я нахожусь в столбце с полем camp_id со значением 1, я хочу отобразить все в таблице, которая имеет значение 1 в этом поле.
Если я изменил URL-адрес post.php?postid=2
и у этого сообщения есть camp_id
скажем 4, я бы отобразил список всего, у которого есть camp_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, но когда я меняю его на что-то еще, я получаю ошибку ниже:
Неустранимая ошибка: Непринятая ошибка: вызов функции-члена fetch_assoc() в строке в C:\inetpub\wwwroot\local.test.co.uk\blog-example\camp1.php: 18 Трассировка стека: # 0 {main} throw в C:\inetpub\wwwroot\local.test.co.uk\blog-example\camp1.php в строке 18
Строка: 18:
while ($row = $relatedlinks->fetch_assoc()) {
В функции getartfromcamp
вы возвращаете $sql
string вместо объекта соединения, когда результата нет.
В этом конкретном случае результат не приходит, поэтому возвращается строка. Поэтому он выдает ошибку, поскольку вы пытаетесь запустить 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;
}