从 PHP 数组中选择 MYSQL 数据

Posted

技术标签:

【中文标题】从 PHP 数组中选择 MYSQL 数据【英文标题】:Selecting MYSQL data from PHP array 【发布时间】:2012-04-24 08:26:53 【问题描述】:

我正在创建一个社交网络。我想让用户能够订阅人。理论上,当用户单击订阅按钮时,php 会将该用户的 ID 添加到 mysql 列表中“订阅”列下的数组中。现在,我想要一个新闻提要风格的主页。我想知道,如果我通过 PHP 提取“订阅”数据,我怎么能只显示用户订阅的人的帖子(也在 MYSQL 表中)?

【问题讨论】:

你能告诉我们相关表的架构吗? 【参考方案1】:

使用 UNION 将不同表中的所有帖子合并,然后使用“IN”子句根据当前用户 ID 获取您要关注的所有用户 ID:

例子:

$userFavs = "SELECT userID FROM favs WHERE followerID = '#loggedinUserID#'"

mysql_query("SELECT 'wall' as type, body, date FROM wall WHERE userID IN ($userFavs) 
UNION
SELECT 'photo' as type, caption, date FROM photos WHERE userID IN ($userFavs) UNION... etc
ORDER BY date DESC");

如果您通过 mysql_fetch_array() 运行查询,它将返回如下内容:

Array => 
[0] =>  type = "wall", body = "This is a wall update", date = "1234567890" ,
[1] =>  type = "photo", caption = "Us at the beach", date = "..." ,
...

您需要确保每次调用“UNION”时每个 SELECT 语句中的列数都相同,否则将无法正常工作。你可以 /fake/ 列,就像我对上面的 type 列所做的那样。

【讨论】:

好的。谢谢你的信息。我现在有了基本的想法,但我是初学者。我现在想要的只是文本状态。我假设我所要做的就是使用$userFavs = "SELECT userID FROM favs WHERE followerID = '#loggedinUserID#'" mysql_query("SELECT 'wall' as type, body, date FROM wall WHERE userID IN ($userFavs) ORDER BY date DESC"); 是的。那可行。但请确保使用正确的索引和缓存,否则查询可能会非常慢。【参考方案2】:

我认为您正在寻找一种方法来serialize 您在数据库中的数组。 This 可能也有帮助!

【讨论】:

以上是关于从 PHP 数组中选择 MYSQL 数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP从mysql中取出多组数据 如何加入数组中并转成JSON数组

如何在 PHP 中返回从 MySQL 获取的数组

PHP如何使用laravel 5将数据从数组保存到mysql

Chart.js 数据数组使用 PHP、MySQL。如何从 JSON 数组定义数据源?

Php Mysql NOT IN 数组只影响数组中的第一个结果

从数据数组(php,mysql)编写循环sql查询