Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP数组中选择MYSQL数据_Php_Mysql_Arrays - Fatal编程技术网

从PHP数组中选择MYSQL数据

从PHP数组中选择MYSQL数据,php,mysql,arrays,Php,Mysql,Arrays,我正在创建一个社交网络。我希望有一个用户能够订阅的人。理论上,当用户单击subscribe按钮时,PHP会将该用户的ID添加到MYSQL列表中subscribed to列下的数组中。现在,我想要一个新闻提要风格的主页。我想知道,如果我通过PHP获取订阅的数据,我怎么能在用户订阅的MYSQL表中只显示帖子呢?我想你正在寻找一种在DB中访问数组的方法。也许会有帮助 使用UNION组合来自不同表的所有帖子,然后使用IN子句根据当前用户ID获取您想要遵循的所有用户ID: 例如: $userFavs =

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

我想你正在寻找一种在DB中访问数组的方法。也许会有帮助

使用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\u fetch\u数组运行查询,它将返回如下内容:

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

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

您可以向我们展示相关表的模式吗?好的。谢谢你的信息。我现在有了基本的想法,但我是个初学者。我现在只想要文本状态。我假设我所要做的就是使用$userFavs=SELECT userID FROM favs,其中followerID='loggedinUserID'mysql\u querySELECT'wall'作为类型,body,date FROM wall,其中userID在$userFavs ORDER BY date DESC中;是的。那就行了。但是,请确保使用正确的索引和缓存,否则这可能是一个非常慢的查询。