【问题标题】:PHP MySQL search for data in arrayPHP MySQL搜索数组中的数据
【发布时间】:2013-10-15 07:39:44
【问题描述】:

我正在做一个建立基本社交网络的实践项目。我有一个包含用户 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 注入的影响(因为“查询”来自用户搜索),但还没有正确理解这一点,因此对此的帮助也会很好。谢谢!

【问题讨论】:

    标签: php mysql sql mysqli code-injection


    【解决方案1】:

    您应该创建新表,例如“friends”,并将其包含在其中,其结构如下:user_id |朋友ID。它应该是这样的:

    user_id | friend_id
        1   |     1
        1   |     2
        1   |     3
        2   |     4
    

    还有

    SELECT * FROM friends WHERE user_id = $our_user_id
    

    并使用:JOIN 语法。

    (顺便说一句。更好地学习 PDO)

    【讨论】:

    • 这就是实现它的方法(作为一个我自己刚刚学习 SQL 的人,我也发现 SQL 不支持列表非常令人沮丧)。我也第二次学习 PDO。你可以在这里阅读 - net.tutsplus.com/tutorials/php/…
    猜你喜欢
    • 2015-05-27
    • 2016-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 2012-06-11
    相关资源
    最近更新 更多