Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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 mysql表中未存储斜杠_Php_Mysql_Pdo - Fatal编程技术网

Php mysql表中未存储斜杠

Php mysql表中未存储斜杠,php,mysql,pdo,Php,Mysql,Pdo,这是我的代码的简化版本。我试图实现的是,我想将映像路径插入到DB表中。我使用了常量目录分隔符,我也使用了PDO $tmp = $_FILES['file1']['tmp_name']; $name = $_FILES['file1']['name']; $path = getcwd() . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $name; $success = move_uploaded_file($t

这是我的代码的简化版本。我试图实现的是,我想将映像路径插入到DB表中。我使用了常量目录分隔符,我也使用了PDO

$tmp    = $_FILES['file1']['tmp_name'];
$name   = $_FILES['file1']['name'];
$path   = getcwd() . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $name;



$success = move_uploaded_file($tmp, $path);


if($success){
    $query = "INSERT INTO phptbl (Name, Photo) VALUES ('name', '$path')";
    $db->exec($query);
}else{
    echo 'Something went wrong!';
}
数据将插入到表中,而不进行目录分离


请建议

使用准备好的查询,它将保护您免受斜杠、引号和其他特殊字符的问题

请尝试下一步:

$tmp    = $_FILES['file1']['tmp_name'];
$name   = $_FILES['file1']['name'];
$path   = getcwd() . DIRECTORY_SEPARATOR . 'images' . DIRECTORY_SEPARATOR . $name;



$success = move_uploaded_file($tmp, $path);


if($success){
    $query = "INSERT INTO phptbl (Name, Photo) VALUES ('name', :path)";
    $stmt = $db->prepare();
    $stmt->execute([':path' => $path]);
}else{
    echo 'Something went wrong!';
}

如果系统上的
目录\u分隔符
\
,则您正在创建带有反斜杠的字符串。反斜杠在许多语言中都是转义字符,包括SQL。数据库将
\
解释为元字符。要正确存储任意值,您需要正确转义该值(到
\\\
),或者更好的方法是准备并绑定查询:

$stmt = $db->prepare("INSERT INTO phptbl (Name, Photo) VALUES ('name', ?)";
$stmt->execute([$path]);

这将正确地保留特殊字符,而不会对其进行解释。

目录分隔符是系统上的反斜杠吗…?是的,我正在使用Windows为什么OP要“尝试”这个?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了未来的访客。