gpt4 book ai didi

php - 具有复杂连接的 SQL 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:37:45 25 4
gpt4 key购买 nike

我想允许用户对 Logo 进行评分。查询应选择该用户尚未评价的下一个 Logo 。

在 review.php 中我们选择一个标志:

<?php 
$dbconnect = mysqli_connect("localhost", "***", "***", "***");
if (!isset($_SESSION)) {
session_start();
}
$thisuser = $_SESSION['uid']

$Recordsetlogos = mysqli_query($dbconnect, "SELECT * FROM tbllogos WHERE status = 'live' LIMIT 1"); //query
$row_Recordsetlogos = mysqli_fetch_assoc($Recordsetlogos);
?>

到目前为止一切顺利。

用户看到 Logo ,选择评级并提交表单。

在下一页中,我们从用户填写的表单中收集数据,并将一条记录插入到数据库中的另一个表中:

<?php 
$dbconnect = mysqli_connect("localhost", "***", "***", "***");

$did = $_POST['did']; // user ID
$lid = $_POST['lid']; // logo ID
$review = $_POST['review']; // rating
$desrank = $_POST['desrank']; // user's rank

$updateSQL = mysqli_query($dbconnect, "INSERT INTO tblreviews (did, lid, vote, desrank) VALUES ('$did', '$lid', '$review', '$desrank')");

mysqli_close($dbconnect);

header("Location: review.php"); // send user back
exit;

用户返回 review.php,对下一个 Logo 进行评分。

当 review.php 加载时,它会显示与用户刚刚评分相同的 Logo 。

我意识到这可能是一个简单的连接,但我无法理解它。

这是它应该做的,用英语...

Select from tbllogos
where status = 'live'
AND
logo and $thisuser do not appear as a pair in tblreviews.

感谢您的帮助!

最佳答案

您需要在您的选择查询中使用 LEFT JOIN 并在 WHERE 中仅过滤没有连接行的行。

SELECT l.* FROM tbllogos l 
LEFT JOIN tblreviews r ON r.lid = l.id AND r.did = $thisuser
WHERE l.status = 'live' AND r.lid IS NULL
LIMIT 1

我假设有一列 tbllogos.id 作为主键。如果以其他方式命名,您当然需要修改查询。

这个查询说“选择这个用户没有评论的标志”

关于php - 具有复杂连接的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44241223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com