Скрыть комментарии для всех заблокированных друзей - PullRequest
0 голосов
/ 15 декабря 2018

Вот код для блокировки комментариев от заблокированных пользователей.Комментарии блокируются только для первого заблокированного пользователя в таблице базы данных, но я хочу, чтобы комментарии были скрыты для всех заблокированных пользователей в таблице базы данных.

 <?php 
 include_once('adminpanel/dbconnect.php');
 $sql_query =mysql_query("SELECT * FROM blocked_accounts WHERE 
 blocker_id=".$id);
 $rr=mysql_fetch_array($sql_query);
 if($rr['blocked_id'] == $r['id'] && $rr['blocker_id'] == $id)
  {
echo "";    
  } 
 else
   {    ?>

Ответы [ 2 ]

0 голосов
/ 15 декабря 2018

Использование mysql_* функций - очень плохая практика, потому что они устарели в течение многих лет.Поскольку вы находитесь на этапе обучения, лучше всего сосредоточиться на изучении того, как использовать подготовленные утверждения, будь то в форме mysqli или PDO , и придерживайтесь этого.

Что касается рассматриваемой проблемы, то код, который вы дали, является расплывчатым, а вещи, необходимые для отправки запроса, такие как соединение, отсутствуют.Поэтому мой ответ направлен на то, чтобы научить вас правильно использовать mysqli подготовленные высказывания, а не дать вам полноценное решение.

Код:

<?php
    # Establish a connection to the database.
    $connection = new mysqli("your host", "your username", "your password", "your db");

    # Create a mysqli query.
    $query = "SELECT * FROM `blocked_accounts` WHERE `blocker_id` = ?";

    # Prepare the query and check whether the operation was successful.
    if ($stmt = $connection -> prepare($query)) {
        # Bind the parameters to the statement.
        $stmt -> bind_param("i", $id);   # 'i' means integer

        # Execute the statement and check whether the operation was successful.
        if ($stmt -> execute()) {
            # Get the result out of the statement and cache it.
            $result = $stmt -> get_result();

            # Close the statement.
            $stmt -> close();

            # Fetch the first row (use 'while' if you want more).
            if ($row = $result -> fetch_assoc()) {
               # Check whether the user is blocked...
            }
        }
    }

    # Shut down the database connection.
    $connection -> close();
?>

Примечания:

  • Когда вы пытаетесь выполнить запрос к базе данных, не забудьте использовать фактическое установленное вами соединение.При вызове функции mysql_query соединение не передается.
  • Часть && $rr['blocker_id'] == $id в проверке if является избыточной, поскольку значение $id является значением, которое мы использовали для фильтрации возвращаемых результатов.по базе данных, поэтому всегда будет true.
0 голосов
/ 15 декабря 2018

Вам нужно просмотреть все записи, и если какая-либо из них совпадает, то она блокируется.Этот код сначала устанавливает флаг, чтобы сказать, что он не заблокирован, затем, если какая-либо из записей совпадает, устанавливает его в true и выходит из цикла (не стоит продолжать) ...

<?php
include_once('adminpanel/dbconnect.php');
$sql_query = $conn->prepare( "SELECT * FROM blocked_accounts WHERE
 blocker_id= ?");
$sql_query->bind_param("i", $id);
$sql_query->execute();
$blocked = false;
while ($rr=mysqli_fetch_assoc($sql_query))   {
    if($rr['blocked_id'] == $r['id'] && $rr['blocker_id'] == $id)
    {
        $blocked = true;
        break;
    }
}
if($blocked)  
{
    echo "";
}
else
{    ?>

Как упомянуто в комментариях, это обновление до mysqli_ и подготовленные операторы, вам нужно будет также изменить ваше подключение, чтобы использовать mysqli ( PHP функция mysqli connect может помочь, если вы не уверены).

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