Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.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 数据库没有';无法接收文件扩展名_Php_Mysql_Mysqli - Fatal编程技术网

Php 数据库没有';无法接收文件扩展名

Php 数据库没有';无法接收文件扩展名,php,mysql,mysqli,Php,Mysql,Mysqli,我正在用PHP和MySQL创建一个个人资料图片上传系统。除了数据库不包含$db_file_name的扩展名之外,一切都正常。然而,当我回显变量时,它确实在字符串中显示扩展名 当我回显sql时,它也会显示扩展名。因此,问题与MySQL有关 你知道问题出在哪里吗 以下是查询: $db_file_name = "123456.jpg"; // Move result into database $sql = "UPDATE users SET avatar='$db

我正在用PHP和MySQL创建一个个人资料图片上传系统。除了数据库不包含$db_file_name的扩展名之外,一切都正常。然而,当我回显变量时,它确实在字符串中显示扩展名

当我回显sql时,它也会显示扩展名。因此,问题与MySQL有关

你知道问题出在哪里吗


以下是查询:

$db_file_name = "123456.jpg";

        // Move result into database
        $sql = "UPDATE users SET avatar='$db_file_name' WHERE email='$s_email' LIMIT 1";
        $query = mysqli_query($this->db, $sql);

数据库收到的号码没有扩展名(.jpg、.gif、.png)。avatar列的数据类型是VARCHAR(255),默认值为NULL。

好的,我发现了问题

该列的排序规则为拉丁文1_瑞典语ci。
一旦我将其设置为utf8\u general\u ci,问题就解决了。

可能与此无关,但:1)这里存在SQL注入的可能性。2) 文件名在此代码中不是唯一的,这可能会在没有警告的情况下覆盖其他用户的文件。您好,是的,我知道可能存在SQL注入,稍后我将添加检查。但现在我只想让它起作用。由于个人资料照片是上传到用户自己的目录中的,所以复制应该没有问题。稍后,我将添加一个函数,该函数在将新文件放入目录之前清理目录。您能否回显
$sql
以查看其运行时值?它包括文件扩展名吗?在数据库上手动执行相同的查询是否会产生相同的结果?@David当我回显$sql时,它确实包含扩展名。当我在phpMyAdminSQL中运行查询时,它没有收到扩展名,因此我猜MySQL向数据库添加字符串时有问题(可能是因为点?)。也许我应该使用另一种数据类型?我不认为这是个问题,字符串可以包含点。确切的问题是什么?表的模式是什么?如果手动执行查询产生相同的结果,那么至少我们可以将这个问题简化为一个
更新
查询和一个表定义。这不应该有任何区别,除非您使用了一些非常奇怪的
字符。