Php can';t从数据库中检索longblob音频文件

Php can';t从数据库中检索longblob音频文件,php,mysql,Php,Mysql,我将音频文件插入到数据库中,然后我很好地检索了它们,然后即使我使用相同的代码,也无法检索到一些文件这是代码 getAudio.php <?php include 'conn.php'; // to connect with the database $id = $_GET['id']; // validation just to be safe $sql = "SELECT file FROM letters1 WHERE id=$id"; // choose

我将音频文件插入到数据库中,然后我很好地检索了它们,然后即使我使用相同的代码,也无法检索到一些文件这是代码 getAudio.php

    <?php
include 'conn.php';
// to connect with the database
  $id = $_GET['id'];
  // validation just to be safe

  $sql = "SELECT file FROM letters1 WHERE id=$id"; 
  // choose the column from the table where the id= the id of the audio file

  $result = mysql_query("$sql");
  //query the audio file

  $row = mysql_fetch_assoc($result);
  //Returns an associative array

  mysql_close($link);
  //closes the non-persistent connection to the MySQL

  header("Content-type: audio/mpeg"); 
  //audio/wav for wav files mpeg for mp3 files, we used mp3 cuz 
  //wav didn't work on IE so just to be sure

 echo $row['file'];
 //calls the audio file and returns it in the src attribute
?>

撇开SQL注入不谈,您的代码似乎还可以。可能是您达到了某些内存或存储限制:

  • 猜测1:您正在使用blob类型的字段,但您的文件比该类型的字段大,并且在插入表时被截断。使用容量更大的字段类型可能是一种解决方案(mediumblob或longblob)

  • 猜测2:file字段的内容对于php内存限制来说太重了。您可以尝试通过以下方式允许更多:

使用和.htaccess文件:

    php_value memory_limit 128M
或者使用脚本顶部的ini_集:

    ini_set('memory_limit', '128M');
(32、64、128或任何适合您的数字)


编辑:哎呀。。。没有注意,标题已经说您正在使用longblob^

SQL注入,您的代码似乎还可以。可能是您达到了某些内存或存储限制:

  • 猜测1:您正在使用blob类型的字段,但您的文件比该类型的字段大,并且在插入表时被截断。使用容量更大的字段类型可能是一种解决方案(mediumblob或longblob)

  • 猜测2:file字段的内容对于php内存限制来说太重了。您可以尝试通过以下方式允许更多:

使用和.htaccess文件:

    php_value memory_limit 128M
或者使用脚本顶部的ini_集:

    ini_set('memory_limit', '128M');
(32、64、128或任何适合您的数字)

编辑:哎呀。。。没有注意,标题已经说您正在使用longblob^

您很容易受到攻击,并且只是假设您的查询成功。永远不要假设db操作成功。始终假设失败,检查失败,并将成功视为惊喜。您很容易受到攻击,并且只是假设您的查询成功。永远不要假设db操作成功。总是假设失败,检查失败,把成功当作惊喜。