0

基本的なソーシャル ネットワークを設定する練習プロジェクトを行っています。ユーザーID、名前、姓、および友人である他のすべての「ユーザー」のID番号を含む友人列を含むテーブルがあります。例 3 「ドナルド」「アヒル」「4、5、23、42」。
値がわかっている場合、次のように機能します。

if(mysqli_connect_errno($con))  {
    echo "failed to connect" . mysql_connect_error();
} else {
    $resulting = mysqli_query($con, "SELECT * FROM $tbl_name WHERE LastName LIKE '%$secondquery%'
        OR LastName LIKE '%$firstquery%'
        OR LastName LIKE '%$thirdquery%'
        OR LastName LIKE '%$fourthquery%'
        OR FirstName LIKE '%$secondquery%'
        OR FirstName LIKE '%$firstquery%'
        OR FirstName LIKE '%$thirdquery%'
        OR FirstName LIKE '%$fourthquery%'
    ");
    $counting = mysqli_num_rows($resulting);

    if($counting != 0){
        while($row = mysqli_fetch_array($resulting))
        {
            if($row['Profile'] != null) {
                $defaultprofilepic = $row['Profile'];
            }else {
                $defaultprofilepic = "defaultprofile.JPG";
            }
            $PublicProfile = $row['ProfilePage'];
            $Friends = array("4", "5", "23", "42") 
            if(in_array(42, $Friends)){
                echo $row['FirstName'] . " is your friend!";
            } else {
                echo "Connect with " . $row['FirstName'];
            }
        }
    }
}

ただし、データベースでのデータの表示方法に関係なく、次のものが適切に機能しません (例: "1"、"2"、"42" または "1, 2, 3, 4" または 1 2 3 4 . 42 がリストの最初にある場合、多くの場合は機能しますが、あまり役に立ちません!

$Friends = array($row['Friends'];
if(in_array(42, $Friends)) {
    echo $row['FirstName'] . " is your friend!";
} else {
    echo "Connect with " . $row['FirstName'];
}

おそらく、それを行う、または関連データを保存するより良い方法があることは承知していますので、どんな提案も大歓迎です! また、次のものがSQLインジェクションに対して脆弱である可能性があることも知っています(「クエリ」はユーザー検索からのものであるため)が、まだそれを正しく理解していないため、そのヘルプも同様に役立ちます. ありがとう!

4

1 に答える 1