【问题标题】:Uploading a filename to mysql database将文件名上传到mysql数据库
【发布时间】:2013-08-15 03:43:28
【问题描述】:

我正在尝试上传通过前一页上带有“浏览”按钮的表单选择的文件名。执行此操作的代码:

$filename = $_FILES['userfile']['name']; // Get the name of the file (including file extension).

//inserting data order
$clip = "INSERT INTO musicdb
            (clipID, clipName, genre)
            VALUES
            ('','$filename','$name1')";

这在尝试上传没有撇号的文件时工作正常,但是当尝试上传带有撇号的文件例如“朋友的生日”时,它无法上传到 mysql 表。我认为这与在 INSERT 语句中交替使用“和”有关。我不知道默认情况下 $filename = $_FILES['userfile']['name'] 使用哪个括号是“还是”。

提前致谢

【问题讨论】:

  • 回显生成的$clip 查询,您将看到问题所在。引号(撇号)必须转义。

标签: php mysql sql upload


【解决方案1】:

你需要转义你的字符串。

$filename = mysqli_real_escape_string($con, $filename);

【讨论】:

  • 这会导致 $filename 为空?
【解决方案2】:

确保对您在 SQL 语句中使用的任何变量进行转义。供参考:

http://php.net/manual/en/mysqli.real-escape-string.php

【讨论】:

    【解决方案3】:

    对于引号使用这个例如

    addslashes($str);
    

    【讨论】:

    • 当你添加斜线时,你也会有条斜线。如果我没记错的话。
    • 当你想要显示 $str 来使用它时,正是你需要的
    【解决方案4】:

    首先从请求的文件名中将撇号替换为另一个字符(通常不使用)。 然后插入到 MySQL 表中。

    【讨论】:

      猜你喜欢
      • 2011-09-12
      • 2010-11-21
      • 2011-12-12
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 2023-03-20
      相关资源
      最近更新 更多