Php 救命啊!用户注册问题!

Php 救命啊!用户注册问题!,php,jquery,mysql,registration,Php,Jquery,Mysql,Registration,我的想法是: 我有一个用户数据库,每个用户都有一个自动递增的id号字段,以及其他各种字段,这些字段上都有详细信息。我想在用户记录中存储一个包含朋友数组的字段。我想以最有效的方式存储并能够搜索每个用户的“好友id数组”字段,并列出每个用户搜索的好友id。假设在某个时候有一百万个用户,每个用户的数组中都有一百万个“朋友ID”,我不认为用逗号分隔它们是有效的,有解决方案吗?它是否可以存储在blob中并按位搜索?(例如每人一位,因此1k blob可以存储多达1024个可能的好友组合)我认为另一个表是最好

我的想法是: 我有一个用户数据库,每个用户都有一个自动递增的id号字段,以及其他各种字段,这些字段上都有详细信息。我想在用户记录中存储一个包含朋友数组的字段。我想以最有效的方式存储并能够搜索每个用户的“好友id数组”字段,并列出每个用户搜索的好友id。假设在某个时候有一百万个用户,每个用户的数组中都有一百万个“朋友ID”,我不认为用逗号分隔它们是有效的,有解决方案吗?它是否可以存储在blob中并按位搜索?(例如每人一位,因此1k blob可以存储多达1024个可能的好友组合)我认为另一个表是最好的解决方案。这是一种多对多关系,我为用户朋友建立了一个单独的表:usrfrnd_tbl 包含UserFriendID(唯一键)、UserID、FriendID列 在中,我将Jquery自动完成应用于注册表的friends字段:当访问者在此输入字段中键入现有用户的名称时,首先,脚本搜索名称是否存在,完成它(如果存在),并添加逗号。用户可以键入第二、第三。。。将现有用户名添加到此字段,并且每次脚本都将自动完成。现在我想创建一个php文件,搜索这些用户名的id,创建id数组,将其添加到db表中的表“usrfrnd_tbl”新用户“FriendID”字段中。 问题: 1.怎么做?现在,如何获取书面姓名的id数组,并在提交注册表后放入usr_表的“friends”字段? 2.我只需要笔名和全名的id。我不需要值。如何从jquery代码中删除它? 对不起,我英语不好 我的代码:

HTML

<form action="index.php" method="post">      
<input class="std" type="text" name="friends" id="friends"/>
<input type="submit" name="submit">
</form>

您需要做的是创建另一个表来存储朋友ID,您不应该在users表中以逗号分隔的值进行此操作。例如

表:用户

UserID、FirstName、LastName
约翰,史密斯
2、苏珊卡特
詹姆士,布莱克

表:朋友
ID、用户ID、朋友ID
1,1,2
2,1,3
3,3,2

上面的Friends表包含3行。它显示用户ID 1(John)有两行,但两行的friendID不同。现在您需要将这两个表连接在一起。范例

从用户u中选择* 在f.UserID=u.UserID上内部加入朋友f,其中u.UserID=1


上面的sql将在注册表中返回两行,即John的两个朋友。

friends文本框和autocomplete脚本(支持从userstable“fullname”列完成多个单词)。现在问题1:如何从文本输入字段中获取名称数组,并使用php查找这些名称的id?问题2:如果在注册过程中新用户的id未知,注册表将如何将用户id放入第二个(朋友)表中?我不明白你所说的文本输入数组是什么意思。请举例说明用户将在文本框中输入什么内容。例如,如果访问者编写“Hu”脚本,从用户表“Sid Hussain”中查找,完成它,添加逗号,用户可以添加任意数量的用户名。每次脚本运行时。我想把这个用户名用逗号分隔到php数组中,逐个搜索这些用户名的id,然后添加到friends表中。但是第二次恐惧发生了吗?但如果在注册过程中新用户的id未知,注册表单将如何将用户id放到第二个(朋友)表中?
$(function() {
    function split( val ) {
        return val.split( /,\s*/ );
    }
    function extractLast( term ) {
        return split( term ).pop();
    }

    $( "#friends" )
        // don't navigate away from the field on tab when selecting an item
        .bind( "keydown", function( event ) {
            if ( event.keyCode === $.ui.keyCode.TAB &&
                    $( this ).data( "autocomplete" ).menu.active ) {
                event.preventDefault();
            }
        })
        .autocomplete({
            source: function( request, response ) {
                $.getJSON( "search.php", {
                    term: extractLast( request.term )
                }, response );
            },
            search: function() {
                // custom minLength
                var term = extractLast( this.value );
                if ( term.length < 2 ) {
                    return false;
                }
            },
            focus: function() {
                // prevent value inserted on focus
                return false;
            },
            select: function( event, ui ) {
                var terms = split( this.value );
                // remove the current input
                terms.pop();
                // add the selected item
                terms.push( ui.item.value );
                // add placeholder to get the comma-and-space at the end
                terms.push( "" );
                this.value = terms.join( ", " );
                return false;
            }
        });
});
$db = new mysqli('localhost', 'user' ,'pass', 'db') or die(mysqli_errno());
$q = strtolower($_GET["term"]);
if (!$q) return;
$query =  $db->query("select id, fullname from usr_table where fullname like '$q%'")  or die(mysqli_errno());
$results = array();
while ($row = mysqli_fetch_array($query)) {$results[] = array ( "id" => $row[0] , "label" => $row[1], "value" => $row[1] );}
echo json_encode($results);