2012-10-22 79 views
-2

由於某種原因,我有一個只能部分工作的INSERT語句。該代碼採用POST數據並使用它恢復XML文件,從XML文件中提取數據並將其呈現給用戶。然後用戶可以確認數據是否正確並將其添加到數據庫中。無法將PHP變量插入到數據庫中

<?php 
require($DOCUMENT_ROOT . "header.html"); 
// Conect to Database 
$con = mysql_connect("localhost","USER","PASSWORD"); 
if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("DATABASE", $con); 
// Find XML File 
    $xml = simplexml_load_file("http://www.crossref.org/openurl/". 
    "?id=doi:".urlencode($_POST[send_doi]). 
    "&noredirect=true&pid=APIKEY&format=unixref"); 
// Set variables with XML data 
    $title = $xml->doi_record->crossref->journal->journal_article->titles->title; 
    $year = $xml->doi_record->crossref->journal->journal_article->publication_date->year; 
    $journal = $xml->doi_record->crossref->journal->journal_metadata->full_title; 
    $doi = $xml->doi_record->crossref->journal->journal_article->doi_data->doi; 
// If user click yes add to the Database 
    if (!empty($_GET['act'])) { 
     $sql="INSERT INTO ref (uid, date, doi, title, year, journal) VALUES ('1',NOW(),'$doi','$title','$year','$journal')"; 
      if (!mysql_query($sql,$con)) 
      { 
      die('The Reference could not be added, beacuse of SQL Error:' . mysql_error()); 
      } 
      echo "New Reference Added"; 
      mysql_close($con); 
    } else { 
?> 
<!-- Present the XML data to user --> 
<h1>Add Reference</h1> 
<p><strong>Is this the reference you want to add?</strong></p> 

Title: <?php echo $xml->doi_record->crossref->journal->journal_article->titles->title;?><br /> 
Year: <?php echo $xml->doi_record->crossref->journal->journal_article->publication_date->year;?><br /> 
Journal: <?php echo $xml->doi_record->crossref->journal->journal_metadata->full_title;?><br /> 
DOI: <?php echo $xml->doi_record->crossref->journal->journal_article->doi_data->doi;?> 

    <form action="newref-getxml.php" method="get"> 
    <input type="hidden" name="act" value="run"> 
    <input type="submit" value="Yes"> 
</form> 
<?php 
    } 
require($DOCUMENT_ROOT . "footer.html"); 
?> 

代碼成功恢復的XML數據,並將其呈現給用戶,當他們點擊提交按鈕一個新的記錄添加到與正確的UID和數據值的數據庫,但對於DOI,標題沒有值,一年或雜誌

+0

你會得到什麼錯誤?這些值是否真的存在?數據庫是否爲這些條目的正確字段類型? – Peon

+2

重要:PHP手冊強**建議不要再使用'mysql_xxx()'函數。它們已經過時並且不安全。它們也處於被棄用的過程中,因此將從PHP的未來版本中刪除。您應該使用mysqli_xx()函數或PDO庫。 – SDC

+0

我沒有收到任何錯誤消息 – falcs

回答

1

型投你的對象轉換成String

例如: -

$title = (string) $xml->doi_record->crossref->journal->journal_article->titles->title; 
+0

你的意思是在顯示的地方添加(字符串)還是(字符串)代表什麼? – falcs

+0

它將XML對象轉換爲一個字符串,http://php.net/manual/en/language.types.type-juggling.php – wesside

+0

它沒有任何區別 – falcs

0

你鍵入投所有的XML對象?

也可以嘗試下面的查詢

「INSERT INTO REF(UID,日期,DOI,標題,年份,期刊)VALUES( '1',NOW()'」。$ DOI「。 '' 「$稱號。」 '' 「$年。」 ''」 $刊物。 「')」;

相關問題