我试图从4个表中提取数据。当我从MySQL表中的3(user_table,posts,followers)提取数据时,数据检索得很好。它当我试图从第四表(post_likes)拉特定的列,我遇到问题。所有的数据根本不显示。PDO:无法从MySQL中的第4个表中提取数据
这里的数据库结构:
USER_TABLE:user_id, username, name
帖子:post_id, body, user_id, likes
追随者:follower_id, user_id, follower_id
post_likes:likes_id, post_id, user_id
连接脚本:
class DB {
private static function connect() {
$pdo = new PDO ('mysql:host=localhost;dbname=test;charset=utf8','root','');
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $pdo;
}
public static function query($query, $params = array()) {
$statement = self::connect()->prepare($query);
$statement->execute($params);
if (explode(' ', $query)[0] == 'SELECT') {
$data = $statement->fetchAll();
return $data;
}
}
}
脚本,从3代表的工作原理提取数据:
$posts = DB::query('SELECT posts.post_id, posts.body, posts.likes,
users_table.username, users_table.name FROM users_table, posts, followers
WHERE posts.user_id = followers.user_id
AND users_table.user_id = posts.user_id
AND follower_id = :userid
ORDER BY posts.posted_at DESC', array(':userid'=>$userid));
脚本不从4桌工作拉动数据:
$posts = DB::query('SELECT posts.post_id, posts.body, post_likes.post_id,
post_likes.user_id, posts.likes, users_table.username, users_table.name
FROM users_table, posts, followers, post_likes
WHERE posts.user_id = followers.user_id
AND users_table.user_id = posts.user_id
AND follower_id = :userid
ORDER BY posts.posted_at DESC', array(':userid'=>$userid));
任何帮助,我能为这个? thanx
从等式中删除PDO和测试上的MySQL查询直。是否返回任何数据?这听起来像查询只是导致零记录。什么记录在没有WHERE条款的情况下返回?这些表如何加入?提示:显式连接比隐式连接更容易管理。不要用逗号分隔表格,而要使用实际的'JOIN'子句。也许隐式连接没有达到你期望的效果。 – David