【发布时间】:2016-02-26 02:01:01
【问题描述】:
所以我正在使用 fopen/fwrite/fclose 在 php 中编写一个 XML 文件,然后尝试将该信息保存到 MySQL 数据库 BLOB 字段中;但是,我遇到了一个问题,在将信息保存到 MySQL 之后,所有文件包含的是 "Resource id #33" 并且没有我试图保存的信息。
$blahXMLFile = fopen($_POST['scenBlahNewName'].".xml","wb");
fwrite($blahXMLFile, "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>");
fwrite($blahXMLFile, "<Blah>");
fwrite($blahXMLFile, "<Name>");
fwrite($blahXMLFile, $_POST['scenBlahNewName']);
fwrite($blahXMLFile, "</Name>");
fwrite($blahXMLFile, "</Blah>");
fclose($blahXMLFile);
$sql = "INSERT INTO blah (xmlFile)
VALUES ('$blahXMLFile');";
if($conn->query($sql) === TRUE) {
} else { echo "<script>alert('Error: " . $sql . "<br>" . $conn->error . "');</script>";
echo "Error: " . $sql . "<br>" . $conn->error;
} //end else
然后我获取 $blahXMLFile php 变量并尝试将其保存在我的 MYSQL 数据库的 BLOB 字段和“Resource id #33 " 就是文件中的全部内容。如果我使用 javascript 来提醒 php 变量,情况也是如此。
我错过了什么?
编辑:尝试根据评论在此处正确使用 fread:
$blahXMLResource = fopen($_POST['scenBlahNewName'].".xml","w");
$blahXMLFile = fread($blahXMLResource, filesize($_POST['scenBlahNewName'].".xml"));
因为这根本不再保存文件。
【问题讨论】:
-
从什么时候开始使用 fwrite 写入数据库?
-
我并没有使用 fwrite 来实际将内容保存在数据库中,只是为了写入文件;我使用 sql 查询,但我想弄清楚的是如何准确地保存正确的信息,因为没有任何内容被保存,只是 Resource id #33。
-
确保在
fopen()之后检查错误,并对故障进行适当的诊断。确保正确清理$_POST['scenBlahNewName']中的用户输入。添加中间诊断打印以确保您确实知道数据正在写入哪个文件。 -
什么是
wb模式?你想在哪里写信给db?听起来您正在尝试编写fopens 资源。使用fread阅读内容。 php.net/manual/en/function.fread.php -
wb 和 w 一样;如帖子中所述,它是一个 blob 字段;我要写的是 fwrites 中的所有内容,但由于某种我不知道的原因,资源 ID 是最终实际写入的内容。