Php can';t从数据库中检索longblob音频文件
我将音频文件插入到数据库中,然后我很好地检索了它们,然后即使我使用相同的代码,也无法检索到一些文件这是代码 getAudio.phpPhp 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
<?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内存限制来说太重了。您可以尝试通过以下方式允许更多:
php_value memory_limit 128M
或者使用脚本顶部的ini_集:
ini_set('memory_limit', '128M');
(32、64、128或任何适合您的数字)
编辑:哎呀。。。没有注意,标题已经说您正在使用longblob^SQL注入,您的代码似乎还可以。可能是您达到了某些内存或存储限制:
- 猜测1:您正在使用blob类型的字段,但您的文件比该类型的字段大,并且在插入表时被截断。使用容量更大的字段类型可能是一种解决方案(mediumblob或longblob)
- 猜测2:file字段的内容对于php内存限制来说太重了。您可以尝试通过以下方式允许更多:
php_value memory_limit 128M
或者使用脚本顶部的ini_集:
ini_set('memory_limit', '128M');
(32、64、128或任何适合您的数字)
编辑:哎呀。。。没有注意,标题已经说您正在使用longblob^您很容易受到攻击,并且只是假设您的查询成功。永远不要假设db操作成功。始终假设失败,检查失败,并将成功视为惊喜。您很容易受到攻击,并且只是假设您的查询成功。永远不要假设db操作成功。总是假设失败,检查失败,把成功当作惊喜。