mysql table 中没有存储斜线
No slashes stored in mysql table
这是我的代码的简化版本。我想要实现的是我想将图像路径插入数据库 table。我使用了常量 DIRECTORY_SEPERATOR,我也在使用 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!';
}
数据将被插入到 table 中,没有目录分隔。
请指教
使用准备好的查询,它将保护您免受斜线、引号和其他特殊字符的问题
下一步试试:
$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!';
}
如果 DIRECTORY_SEPERATOR
在您的系统上是 \
,则您正在创建一个带反斜杠的字符串。反斜杠是许多语言中的转义字符,包括 SQL。数据库会将 \
解释为元字符。要正确存储任何和所有任意值,您需要正确地转义该值(到 \
),或者更好的是,准备并绑定 查询:
$stmt = $db->prepare("INSERT INTO phptbl (Name, Photo) VALUES ('name', ?)";
$stmt->execute([$path]);
这将正确地保留特殊字符而不对其进行解释。
这是我的代码的简化版本。我想要实现的是我想将图像路径插入数据库 table。我使用了常量 DIRECTORY_SEPERATOR,我也在使用 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!';
}
数据将被插入到 table 中,没有目录分隔。
请指教
使用准备好的查询,它将保护您免受斜线、引号和其他特殊字符的问题
下一步试试:
$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!';
}
如果 DIRECTORY_SEPERATOR
在您的系统上是 \
,则您正在创建一个带反斜杠的字符串。反斜杠是许多语言中的转义字符,包括 SQL。数据库会将 \
解释为元字符。要正确存储任何和所有任意值,您需要正确地转义该值(到 \
),或者更好的是,准备并绑定 查询:
$stmt = $db->prepare("INSERT INTO phptbl (Name, Photo) VALUES ('name', ?)";
$stmt->execute([$path]);
这将正确地保留特殊字符而不对其进行解释。