php mysqli fetch_array()提供带有附加反斜杠的路径
我在MySql数据库中有一个表,我通过php mysqli prepared语句用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
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()
这并没有回答他们的问题为什么这不是答案?我用一种方法来回答这个问题,并把它放到一个数组中。这种方法不会使“/”失败,也不会在前面打“\”。所以这是一个巧妙的答案^^^这不是他们想要的。他们的问题是不必要的削减,不再是了。