如何声明变量

时间:2014-03-02 20:38:08

标签: php mysql sql function

我有未定义的变量问题。问题是,我找到了一个教程,可以制作一个类型的微博客Twitter,有一些问题,我决定,但这让我很耐心。

错误消息:

注意:未定义的变量:第58行的caminho \ do \ arquivo \ functions.php中的额外值

功能

function show_users($user_id=0){

    if ($user_id > 0){
        $follow = array();
        $fsql = "SELECT user_id FROM following WHERE follower_id='$user_id'";
        $fresult = mysql_query($fsql);

        while($f = mysql_fetch_object($fresult)){
            //array_push($follow, $f->user_id);
            $follow[] = $f->user_id;
        }
        if (count($follow)){
            $id_string = implode(',', $follow);
            $extra =  " AND id IN ($id_string)";
        }else{
            return array();
        }
    }
    $users = array();
    $sql = "SELECT id, username FROM users WHERE status='active' $extra ORDER BY username";
    $result = mysql_query($sql);

    while ($data = mysql_fetch_object($result)){
        $users[$data->id] = $data->username;
    }
    return $users;
}

有问题的一行是:

$sql = "SELECT id, username FROM users WHERE status='active' $extra ORDER BY username";

有什么建议吗?

4 个答案:

答案 0 :(得分:1)

有两种方法:

1. function show_users($user_id=0){
   $extra='';

2. function show_users($user_id=0,$extra=''){

实际上,只有当你拥有$ user_id>时才宣布$ extra。 0但是对于当前情况,你必须让$ user_id等于或小于0,因此你的查询找不到$ extra。

我希望你有个主意。

答案 1 :(得分:0)

function show_users($user_id=0){
 $extra = ''; //if no extra, you'll get just an empty string
 //etc...
}

答案 2 :(得分:0)

function show_users(...) {
   $extra = ''; // <--just add this line
   blah blah blah blah blah
}

在您的代码中,如果两个if()测试都成功,则仅定义$ extra。显然它们不是,所以最终你的sql字符串中有一个未定义的$ extra。

答案 3 :(得分:0)

function show_users($user_id=0,extra='') // use this
        {    
    if ($user_id > 0){
        $follow = array();
        $fsql = "SELECT user_id FROM following WHERE follower_id='$user_id'";
        $fresult = mysql_query($fsql);

        while($f = mysql_fetch_object($fresult)){
            //array_push($follow, $f->user_id);
            $follow[] = $f->user_id;
        }
        if (count($follow)){
            $id_string = implode(',', $follow);
            $extra =  " AND id IN ($id_string)";
        }else{
            return array();
        }
    }