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