这个问题听起来很简单,但我找不到错误: 我的 PHP 脚本将文本发送到 MySQL 数据库。这是由用户管理系统支持的。因此,只有发布文本的用户才能看到它。现在我想集成一个“共享功能”。用户a允许用户b在他的文本概述中看到用户a的发帖之一(有点像笔记共享功能)。
与用户 b 共享笔记后,他可以在概述中看到该笔记,但打开笔记查看详细信息时,它不起作用。
在技术方面,我有 3 个表:
1.) 注释 - 包含字段标题、文本和用户
2.) 用户 - ID、名称和密码
3.) 邀请 - NoteID、fromID 和 toID
我的邀请概述 SQL 语句是(正在运行):
SELECT * FROM notes a, invites b WHERE (b.toID = '$UserID') AND (b.ItemID = a.id) AND a.Deleted = 0
但是当我有了这个声明
SELECT * FROM notes a, invites b WHERE (a.id = '$ItemID') AND ((a.User = '$username') OR (b.toID = '$userid'))
在详细 View 中它不起作用。即使我有这个非常简单(且不安全)的 SQL,它也不起作用:
SELECT * FROM notes WHERE ID = '$ItemID'
我真的很绝望,我唯一的解释(这是非常不现实的)是MySQL有一种内部安全检查,不允许显示来自陌生人的内容:S
有什么想法吗?非常感谢
最佳答案
我不确定这是您唯一的问题,但您无意中进行了交叉连接。 MySQL 可能会尝试在结果集中创建大量行,然后超时。使用 JOIN ... ON ...
语法来帮助您记住指定如何执行连接:
SELECT *
FROM notes a
JOIN invites b
ON ... -- put some join condition here
WHERE (a.id = '$ItemID') AND ((a.User = '$username') OR (b.toID = '$userid'))
我猜你想要这样的东西:
ON b.NoteID = a.ID
关于php - MySQL内部 session 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7457653/