mysqli_result类的对象无法通过进行查询而转换为字符串

时间:2014-11-08 15:17:22

标签: php mysql mysqli

我一直在问很多问题,我是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);

(顺便说一句,我试图缩进,但它不起作用 - , - )

2 个答案:

答案 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检查我的数据库连接是否成功了。感谢你们所有人!