php - 当 mysql 中的文件名包含 ' 时,附件不起作用

标签 php mysql

我正在创建一个页面,可以在其中选择附加文件。当附加的文件名称中包含单引号时,我收到错误。这是我尝试的方法:

$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/

相关文章:

php - 为什么这个递归 in_array 函数错误地返回 true?

php - 在 CodeIgniter 2.0 中返回并使用数据库中的多维记录数组

php - 在 mamp 中更改 php 版本

php - 通过一个mysql查询插入到不同的表中

mysql - 将行从一个链接表插入到另一个链接表

mysql - 从理论上讲,此 SQL 查询是否太大而无法在负载下快速提供服务?

php - 获取函数数组的 sibling

php - 从 Hive 表生成 DDL,并将每个 DDL 写入不同的 .txt 文件

php - 如何在 mysql 中更改 one day plus 的时间?

mysql - Mysql + Percona 上的查询非常慢