我正在尝试从数据库中检索数据但是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;
}
}
我需要改变的地方?
答案 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