Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php mysqli fetch_array()提供带有附加反斜杠的路径_Php_Mysqli_Prepared Statement - Fatal编程技术网

php mysqli fetch_array()提供带有附加反斜杠的路径

php mysqli fetch_array()提供带有附加反斜杠的路径,php,mysqli,prepared-statement,Php,Mysqli,Prepared Statement,我在MySql数据库中有一个表,我通过php mysqli prepared语句用fetch\u array()选择一行中的所有内容。其中一个字段是路径(unix系统样式,带有正斜杠'/'),但出现的是在每个正斜杠之前带有反斜杠的路径,如:'\/'。 具体而言,我使用的代码如下: $query = "SELECT * FROM `info` WHERE ID = ?"; ... $stmt->bind_param('s', $id); $stmt->e

我在MySql数据库中有一个表,我通过php mysqli prepared语句用
fetch\u array()
选择一行中的所有内容。其中一个字段是路径(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()
获得了正确的结果,但这不适合我,因为我想用它们的键值对获取所有内容


有什么想法吗?

您可以使用此代码将表中的所有内容放入数组中

$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;
}
使用此代码,您可以遍历$contents,并使用$content['dir']获取dir

foreach ($contents as $content) {

    echo $content['dir']

}

您可以在将斜杠推入阵列之前删除斜杠

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

如果无法删除正斜杠,请尝试:
stripslashes()
这并没有回答他们的问题为什么这不是答案?我用一种方法来回答这个问题,并把它放到一个数组中。这种方法不会使“/”失败,也不会在前面打“\”。所以这是一个巧妙的答案^^^这不是他们想要的。他们的问题是不必要的削减,不再是了。