我有我的旧网站所以我决定将它从mysql_更改为mysqli,所以我设法完成了40%,现在我遇到了这个问题。帮助我!
我在'implode()'函数
上收到错误function user_data($user_id,$conn){
$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).'`';
$query = "SELECT ".$fields." FROM users WHERE user_id = ".$user_id."";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
while ($row = $result->fetch_assoc()) {
$data = $row['user_id'];
}
return $data;
}
}
为了让代码能够正常运行
if (logged_in() === true){
$session_user_id = $_SESSION['user_id'];
$user_data = user_data($session_user_id,'user_id','username',
'password','first_name','last_name','email','type',$conn);
}
执行相同任务的任何其他方式
答案 0 :(得分:0)
$ func_get_args有$ user_id,其他字符串值,最后是mysqli连接对象。您必须取消设置函数参数的最后一个元素。正确的user_data函数是:
function user_data($user_id,$conn){
$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]);
unset($func_get_args[ $func_num_args - 1]); // you must delete last element becouse this is mysqli object
$fields = '`'.implode('`,`',$func_get_args).'`';
$query = "SELECT ".$fields." FROM users WHERE user_id = ".$user_id."";
$result = mysqli_query($conn,$query) or die(mysqli_error($conn));
while ($row = $result->fetch_assoc()) {
$data = $row['user_id'];
}
return $data;
}
}
答案 1 :(得分:0)
您没有正确定义y
函数,
在它的签名中,你只有两个参数:
user_data
因此,这些参数为function user_data($user_id, $conn)
和$user_id
。
但是当你致电$conn
时,你传递更多而不是2个参数:
user_data
请参阅此处的 8 参数。 user_data($session_user_id,'user_id','username', 'password','first_name','last_name','email','type',$conn);
不是第二个,它是第八个!
当你做的时候
$conn
保存你的mysqli连接的最后一个参数被添加到$fields = '`'.implode('`,`',$func_get_args).'`';
。
所以,你必须重写你的功能,例如这样:
$fields
并将其称为例如:
function user_data($user_id, $conn, $fields) {
$data = array();
$user_id = (int)$user_id;
$fields = '`'.implode('`,`', $fields).'`';
$query = "SELECT ".$fields." FROM users WHERE user_id = ".$user_id."";
$result = mysqli_query($conn, $query) or die(mysqli_error($conn));
while ($row = $result->fetch_assoc()) {
$data = $row['user_id'];
}
return $data;
}