我有简单的代码,我可以获取文件的内容,并将其保存在浏览器中 HTML5中的本地Db 这里是代码
<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var db = openDatabase('mydb', '1.0', 'Test DB', 100 * 1024 * 1024);
var msg;
db.transaction(function (tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS LOGS (id unique, log, content LONGBLOB not null)');
<?php
$sql1 = "INSERT INTO LOGS(id, log,content)
VALUES('5','abc','" . mysql_escape_string(file_get_contents("43.mp3")) . "')";
?>
var v= "<?php echo $sql1;?>";
console.log(v);
tx.executeSql(v);
msg = '<p>Log message created and row inserted.</p>';
document.querySelector('#status').innerHTML = msg;
});
db.transaction(function (tx) {
tx.executeSql('SELECT * FROM LOGS', [], function (tx, results) {
var len = results.rows.length, i;
msg = "<p>Found rows: " + len + "</p>";
document.querySelector('#status').innerHTML += msg;
for (i = 0; i < len; i++){
msg = "<p><b>" + results.rows.item(i).log + "</b></p>";
document.querySelector('#status').innerHTML += msg;
}
}, null);
});
</script>
</head>
<body>
<div id="status" name="status">No Data </div>
</body>
</html>
它不插入记录我认为file_get_content() 返回内容列表但不是正确的字符串格式 的console.log(V);指出非法的synex
答案 0 :(得分:0)
您正在使用mysql_escape_string()
来逃避Javascript数据库API。对于Javascript以字符串形式调用,该转义并不安全。
相反,我认为你应该在PHP中使用base64_encode
来编码mp3二进制文件。例如:
<?php
$sql1 = "INSERT INTO LOGS(id, log,content)
VALUES('5','abc','" .
base64_encode(file_get_contents("43.mp3")) . "')";
?>
base64格式的字符串应该保存为Javascript,包括Database API和console.log(v)
。然后你应该load the mp3 data with Audio API's readAsDataURL()并播放它。