我一直在问很多问题,我是mysqli的新人。
这是我的代码:
function user_data($user_id, $con) {
$data = array();
$func_num_args = func_num_args();
$func_get_args = func_get_args();
if ($func_num_args > 2) {
unset($func_get_args[0]);
unset($func_get_args[1]);
$fields = '`' . implode('`, `', (array)$func_get_args) . '`';
$result = mysqli_query($con, "SELECT $fields FROM `users` WHERE `user_id` = $user_id");
while ($row = mysqli_fetch_assoc($result)) {
return $row[$fields];
}
}
}
这是错误
捕获致命错误:无法将类mysqli_result的对象转换为第15行的C:\ Users \ DCV_Diego \ Dropbox \ vment \ htdocs \ LOL \ all \ functions \ users.php中的字符串
这是第15行:
$result = mysqli_query($con, "SELECT $fields FROM `users` WHERE `user_id` = $user_id");`
我不明白为什么会出现此错误,我没有使用mysqli_query
作为字符串,我使用while循环返回行数据。至少可能错误应该在return
行......
修改
这是我的新代码
function user_data($user_id, $con, $fields) {
$data = array();
$fields = '`' . implode('`, `', $fields) . '`';
$result = mysqli_query($con, "SELECT $fields FROM `users` WHERE `user_id` = $user_id");
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
return $data;
}
它仍然无法运作!!!!
这是我调用函数
$user_data = user_data($session_user_id, $con, $fields);
(顺便说一句,我试图缩进,但它不起作用 - , - )
答案 0 :(得分:2)
这里有很多问题:
首先假设$con
是mysqli连接本身,因此您不能使用它并将其指定为字段并将其用于implode()
。
其次,之后你需要添加另一个包含实际字段的参数(你可以使用一个数组)。
不要在循环中使用return
,先收集结果,然后最后使用return。
/**
Legend:
$con is for the mysqli connection
$user_id = is going to be used in WHERE clause
$fields is the columns
**/
function user_data($con, $user_id, $fields) {
$data = array();
$fields = implode(', ', $fields);
$result = mysqli_query($con, "SELECT $fields FROM users WHERE user_id= $user_id");
while ($row = mysqli_fetch_assoc($result)) {
$data[] = $row;
}
return $data;
}
$con = new mysqli('localhost', 'username', 'password', 'database_name');
$fields = array('col1', 'col2', 'col3');
$user_id = 1;
$data = user_data($con, $user_id, $fields);
答案 1 :(得分:0)
我真的很抱歉这个问题!我想出了我的错误,我选择了错误的数据库,一个不存在的数据库!我想我是从这里学到的,现在我用mysqli_connect_errno
检查我的数据库连接是否成功了。感谢你们所有人!