我知道使用INNER JOIN时PHP会变得非常复杂。我有一些想法,似乎没有任何工作。
所以这就是我正在努力的方向 当用户A阻止用户B时,用户B将从他们的朋友中删除。
所以我有这个并且有错误
您的SQL语法出错;检查与您的MySQL服务器版本对应的手册,以便在' user1_id = 15 AND user2_id = 3 AND status = 1附近使用正确的语法 INNER JOIN朋友ON块。 删除'第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));
答案 0 :(得分:1)
你的SQL有各种各样的混乱。 (这不是PHP的错误。)
请查看MySQL INSERT和MySQL DELETE语法。我也不了解INNER JOIN
INSERT
声明中的INSERT
MySQLi也只允许你对每个查询执行1个命令(关于安全性和良好的设计?)
INSERT INTO block (user1_id, user2_id, status) VALUES ('$user1_id', '$_user2_id', 1)
应该是这样的(我不知道你的桌子结构,所以我在这里假设:
mysqli_query()
除此之外,您的DELETE查询看起来很好。只需确保它已经拥有{{1}}。
答案 1 :(得分:0)
应该 使用两种不同的语句, 使用参数化查询。
$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;
}