我正在创建一个页面,可以在其中选择附加文件。当附加的文件名称中包含单引号时,我收到错误。这是我尝试的方法:
$id = intval(mysqli_real_escape_string($mysqli, $_REQUEST["id"]));
$upload_directory = "uploads/attachments/";
$result = file_upload("attachment", "../".$upload_directory);
if($result[status] == true) {
$query = "insert into `attachments`
(
`id`,
`file_name`,
`file_extension`,
`file_size`,
`uploaded_file_name`,
`uploaded_file_path`
)
values
(
'$id',
'".$result[file_name]."',
'".$result[file_extension]."',
'".$result[file_size]."',
'".$result[uploaded_file_name]."',
'".$upload_directory.$result[uploaded_file_name]."'
)";
这是我得到的错误:
You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '2016.xlsx'
'xlsx',
'7988',
'1466056157029.xlsx',
'upload' at line 15
我知道问题出在这个地方:'".$result[file_name]."'。问题是因为我使用了单引号。我应该做什么改变?我应该添加什么?
最佳答案
添加单引号。您在文件名中使用 '
,因此使用 addslashes()
并在获取时使用 stripslashes()
。或者从文件名中删除 '
。
见下面代码
$query = "insert into `attachments`
(
`id`,
`file_name`,
`file_extension`,
`file_size`,
`uploaded_file_name`,
`uploaded_file_path`
)
values
(
'$id',
'".addslashes($result['file_name'])."',
'".$result['file_extension']."',
'".$result['file_size']."',
'".$result['uploaded_file_name']."',
'".$upload_directory.$result['uploaded_file_name']."'
)";
关于php - 当 mysql 中的文件名包含 ' 时,附件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37850606/