PHPとMysqlを使用して次のようなシステムを構築しました。彼らはユーザーに従った。このアクションに関連する2つのリレーショナル・テーブルUSERSとFOLLOWがあります。別のテーブルパラメータに基づいて、特定のMySQLテーブルの結果セットを特定の順序で表示する方法
user_id
フォローされているもの。
follow_id
次のもの。
created
次のようなことが起こった日付。特定のユーザーのためのフォロワーを取得する
FOLLOW
--------------------------------------------------
|user_id |follow_id | created |
--------------------------------------------------
| 23 | 5 |2016-08-09 |
--------------------------------------------------
USERS
--------------------------------------------------
|user_id | name |
-------------------------------------------------
| 5 |John Doe|
--------------------------------------------------
このPHPのMySQL関数。
<?php
public static function find_followers($user_id){
global $database;
$followers_ids = array();
$sql = "SELECT user_id
FROM follow
WHERE followed_id = '{$user_id}'
ORDER BY created";
$result = $database->query($sql);
while($follower = $database->fetch_array($result)){
array_push($followers_ids, $follower['user_id']);
}
if(count($followers_ids)){
$id_strings = join(',', $followers_ids);
$sql = "SELECT * FROM users WHERE id IN ($id_strings)";
$followers = self::find_by_sql($sql);
return $followers;
}
}
?>
フォロワー
<?php
$followers = find_followers($id);
foreach($followers as $follower){
echo $follower->full_name() . "followed you.<br/>";
?>
をdislayするコード現在フォロワーのリストは、ユーザーが作成された作成が発注されている、と私は時に順番に彼ら彼らがに基づいて表示したいですユーザに続いた。これはどうすればできますか?
ありがとうございます!
'find_by_sql'を提供するフレームワークをここで使用していますが、どちらが明確かはわかりません。また、準備されたステートメントを使用していないため、[SQLインジェクションバグ](http://bobby-tables.com/)を使用してクエリを作成しています。あなたのフレームワークはこれを安全に行うための推奨された方法を持っているべきです。 – tadman
@tadman私には単純なクラスのように見えるだけで、私たちはそれをすべて表示していません – RiggsFolly
**警告**:このコードでは、おそらくいくつかの[SQLインジェクションのバグ](http://bobby-tables.com/)があります。可能な限り**準備文**を使用してください。これらは[mysqli](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)と[PDO](http://php.net/manual/)で行うのはかなり簡単です。 en/pdo.prepared-statements.php)ここで、ユーザが提供するデータは '?'または ':name'のインジケータで指定され、後で' bind_param'や 'execute'を使ってデータを入力します。 – tadman