设置会话后的User_id问题

时间:2015-12-11 17:00:18

标签: php mysql

我正在尝试从数据库中检索数据但是user_id是问题...会话已经设置但不能正常工作......

function user_data($user_id){
    $data = array();
    $user_id = (int)$user_id;

    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    if($func_get_args > 1){
        unset($func_get_args[0]);

        $fields =' ` ' . implode('` , `',$func_get_args) . '`';
        $query = mysql_query("SELECT $fields FROM `users` WHERE `user_id`= $user_id ") or die(mysql_error());
        $data = mysql_fetch_assoc ($query);
        print_r($data);
        die();
        return $data;
    }
}

我需要改变的地方?

2 个答案:

答案 0 :(得分:0)

鉴于你的问题缺乏背景,很难回答。

您提交的代码构建了一个SQL语句,该语句取决于您如何调用该函数。

如果你用这些参数调用函数:

user_data(5, 'name', 'age');

这将导致以下SQL查询:

SELECT ` name` , `age` FROM `users` WHERE `user_id`= 5 

注意名字前的空格?这会创建一个无效的列名。

 $fields =' ` ' . implode('` , `',$func_get_args) . '`';
             ^ Problem space here               

如果只用一个参数调用它,SQL也会无效。

user_data(5);

结果:

SELECT FROM `users` WHERE `user_id`= 5 

我认为应该阅读:

SELECT * FROM `users` WHERE `user_id`= 5 

我更改了func_get_args > 1行并删除了implode行的空格。

function user_data($user_id) {
    $data = array();
    $user_id = (int) $user_id;

    $func_num_args = func_num_args();
    $func_get_args = func_get_args();

    if($func_num_args > 1){
        unset($func_get_args[0]);
        $fields ='`' . implode('`,`',$func_get_args) . '`';
    } else {
        $fields = ' * ';
    }
    $sql = "SELECT $fields FROM `users` WHERE `user_id`= $user_id ";
    $query = mysql_query($sql) or die(mysql_error());
    $data = mysql_fetch_assoc ($query);

    return $data;
}

答案 1 :(得分:-2)

试试这个:

function user_data($user_id,$fields=array('*')){
    $data = array();
    $fields = implode(', ',$fields);
    $query1 = "SELECT {$fields} FROM users WHERE user_id= {$user_id}";
    $query = mysql_query($query1) or die(mysql_error());
    $data = mysql_fetch_assoc ($query);
    return $data;        
}
user_data(5);
user_data(5,array('username','email'));

查询:

1.) SELECT * FROM users WHERE user_id= 5
2.) SELECT username, email FROM users WHERE user_id= 5