Скрыть комментарии для всех заблокированных друзей

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

 <?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
{    ?>

-3

Решение

Вам нужно просмотреть все записи, и если какая-либо из них совпадает, то это блокируется. Этот код сначала устанавливает флаг, чтобы сказать, что он не заблокирован, а затем, если какая-либо из записей совпадает, устанавливает для него значение 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_ и подготовленные заявления, вам нужно будет изменить подключение, чтобы использовать MySQL (PHP mysqli функция подключения может помочь, если вы не уверены).

0

Другие решения

С помощью 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