php - MySQL内部 session 检查?

标签 php mysql

这个问题听起来很简单,但我找不到错误: 我的 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/

相关文章:

php - 1064 SQL 错误 - 不知道如何修复

PHP - 是否有相当于 str_repeat() 函数的数组?

MySQL查询获取连接表B的计数小于表A中特定字段的值

php - htaccess无限循环问题

php - 是否可以从 php 中的转发电子邮件中检索原始 header

php - 我需要从 php 运行 python 脚本

MySQL:如何限制为列值存储的记录数?

php - PHP 中精确的预计到达时间结果的日期差异

mysql - 使用vba将excel数据导入mysql数据库

mysql - mysql 错误#1064