Php mysql表中未存储斜杠
这是我的代码的简化版本。我试图实现的是,我想将映像路径插入到DB表中。我使用了常量目录分隔符,我也使用了PDOPhp 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
$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,而且是为了未来的访客。