php mysqli fetch_array()给出带有附加反斜杠的路径

时间:2015-02-28 20:44:51

标签: php mysqli prepared-statement

我在MySql数据库中有一个表,我用fetch_array()通过php mysqli预编译语句在一行中选择所有内容。其中一个字段是路径(具有正斜杠'/'的unix系统样式),但是出现的是在每个正斜杠之前带有反斜杠的路径,如:'\/'。 具体来说,我使用的代码如下:

    $query = "SELECT * FROM `info` WHERE ID = ?";
    ...
    $stmt->bind_param('s', $id);
    $stmt->execute();

    $res = $stmt->get_result();

    while($row = $res->fetch_array(MYSQLI_ASSOC)) {
        array_push($info, $row);
    }
    $stmt->close();
    echo json_encode($info);

结果如下:

[{"ID":"a_1338","dir":"\/home\/desktop\/fol\/folid",...}]

虽然最初的路径是这样的:

'/home/desktop/fol/folid'

问题在于我使用select dir from...并使用fetch()得到了正确的结果,但这不适合我,因为我想用其键值对来获取所有内容。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

你可以在将斜杠推入数组之前删除斜杠

while($row = $res->fetch_array(MYSQLI_ASSOC)) {
    $row = stripslashes($row);
    array_push($info, $row);
}

答案 1 :(得分:-1)

您可以使用此代码将表格中的所有内容转换为数组。

$stmt->execute();

$meta = $stmt->result_metadata();

while ($field = $meta->fetch_field()) {
    $params[] = &$row[$field->name];
}

call_user_func_array(array($stmt, 'bind_result'), $params);
while ($stmt->fetch()) {
    foreach($row as $key => $val) {
        $c[$key] = $val;
    }
    $contents[] = $c;
}

使用此代码,您可以查看$内容,并使用$ content [' dir#39;]

获取目录
foreach ($contents as $content) {

    echo $content['dir']

}