2015-11-23 3 views
-2

Так что я пишу файл XML в php с fopen/fwrite/fclose и затем пытаюсь сохранить эту информацию в базе данных MySQL BLOB Поле; однако я столкнулся с проблемой, когда после сохранения информации в MySQL весь файл содержит «Идентификатор ресурса № 33» и ни одна информация, которую я пытался сохранить.Не удается сохранить содержимое файла xml в mysql с помощью fopen/fwrite/fclose (php)

$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 и попытаться сохранить его в BLOB поле в моей базе данных MYSQL и «Resource ID # 33» это все, что в файле , Это также имеет место, если я использую javascript для предупреждения переменной php.

Что мне не хватает?

EDIT: Попытка использовать Fread здесь правильно основаны от комментария:

$blahXMLResource = fopen($_POST['scenBlahNewName'].".xml","w"); 
$blahXMLFile = fread($blahXMLResource, filesize($_POST['scenBlahNewName'].".xml")); 

Потому что не сохраняете файл вообще больше.

+0

С каких пор вы пишите в базу данных с помощью fwrite? – developerwjk

+0

Я не использую fwrite для фактического сохранения содержимого в базе данных, просто для записи в файл; Я использую sql-запросы, но я пытаюсь выяснить, как именно сохранить информацию CORRECT, потому что ни один из этих содержимого не сохраняется, просто Идентификатор ресурса № 33. –

+0

Обязательно проверьте наличие ошибок после 'fopen()' с соответствующей диагностикой при сбое. Удостоверьтесь в правильной дезинфекции ввода пользователя в '$ _POST ['scenBlahNewName']'. Добавьте промежуточные диагностические отпечатки, чтобы убедиться, что вы действительно знаете, к какому файлу записываются данные. –

ответ

0

Хорошо, поэтому я получил его; после консультации с @ chris85 я заменил файл fopen/fwrite/fclose на file_put_contents (я использовал file_get_contents, но это было добавление, а не переписывание файлов каждый раз).

$blahXMLFile = $_POST['scenBlahNewName'].".xml"; 

$blahXMLFileContent = "<?xml version='1.0' encoding='UTF-8' standalone='yes'?> 
<Blah xmlns='uri:/mil/tatrc/physiology/datamodel' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation=''> 
    <Name>".$_POST['scenBlahNewName']."</Name> 
</Blah>"; 

file_put_contents($blahXMLFile, $blahXMLFileContent); 

echo "<script>alert('".addslashes($blahXMLFileContent)."');</script>"; 

$ blahXMLFileContent - это то, что я в конечном итоге внес в базу данных MySQL.

Смежные вопросы