我試圖從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