PHP, Mysqli, SQL-запрос для получения значения и отображения других - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь сделать что-то довольно сложное, но я надеюсь, что это имеет смысл в тексте.

Так что у меня есть ссылка на страницу, которая приводит меня к post.php?postid=3

В моемВ базе данных есть целое поле, которое называется 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}, брошенный в C: \ inetpub \ wwwroot \ local.test.co.uk \ blog-example \ camp1.php в строке 18

Строка: 18:

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

1 Ответ

0 голосов
/ 18 сентября 2018

В функции 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: Выследует переключиться на подготовленные операторы, чтобы предотвратить проблемы, связанные с внедрением SQL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...