ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ блокирует пользователя, а затем таблицу друзей, чтобы удалить пользователя

#php #mysqli #inner-join

#php #mysqli #внутреннее объединение

Вопрос:

Я знаю, что PHP может стать довольно сложным при использовании INNER JOIN. Я поиграл с несколькими идеями, и, похоже, ничего не работает.

Итак, это то, над чем я работаю, когда пользователь A блокирует пользователя B пользователь B удаляется из своих друзей.

Итак, у меня есть это и есть ошибка

У вас ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с ‘user1_id = 15 И user2_id = 3 И status = 1 ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ друзей В блоке. УДАЛИТЬ fro’ в строке 1

Кто-нибудь может полностью объяснить внутреннее объединение и показать мне, где я ошибся для будущего использования.

 $query = mysqli_query($mysqli,"INSERT INTO block user1_id=$user1_id AND user2_id=$user2 AND status=1
INNER JOIN friends ON block. 
DELETE from friends where user1_id=$user1_id AND user2_id=$user2 AND status=2 ")
or die (mysqli_error($mysqli));
  

Комментарии:

1. Почему вы используете INNER JOIN на вставке?

Ответ №1:

Ваш SQL сильно испорчен. (Это не ошибка PHP).

Пожалуйста, пожалуйста, пожалуйста, взгляните на синтаксис MySQL INSERT и MySQL DELETE. Я также не понимаю вашего INNER JOIN INSERT заявления.
MySQLi также позволяет выполнять только 1 команду на запрос (что-то о безопасности и хорошем дизайне?)

INSERT должно выглядеть так (я не знаю структуры ваших таблиц, поэтому я предполагаю, что здесь несколько:

 INSERT INTO block (user1_id, user2_id, status) VALUES ('$user1_id', '$_user2_id', 1)
  

Помимо этого, ваш запрос на удаление выглядит нормально. Просто убедитесь, что он находится в своем собственном mysqli_query() .

Ответ №2:

Вы должны использовать два разных оператора, и вы должны использовать параметризованные запросы.

 $sql_insert = "INSERT INTO block (user1_id, user2_id, status) values (?,?,1)";    
$stmt = $mysqli->prepare($sql_insert);
$stmt->bind_param("s", $user1_id);
$stmt->bind_param("s", $user2_id);
if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

$sql_delete = "DELETE FROM friends where user1_id=? AND user2_id=? AND status=2 "
$stmt = $mysqli->prepare($sql_delete);
$stmt->bind_param("s", $user1_id);
$stmt->bind_param("s", $user2_id);
if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}
  

Комментарии:

1. Спасибо за то, что вы были очень полезны и очень полезны, а не сбили меня с ног. Теперь это имеет гораздо больше смысла.