2012-10-22 5 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 및 데이터 값을 사용하여 데이터베이스에 추가 버튼을 제출 클릭하면 사용자에게 제시하지만 도이, 제목에 대한 값이 없습니다 , 년 또는 저널

+0

어떤 오류가 있습니까? 가치가 실제로 있습니까? DB에 해당 항목의 올바른 필드 유형이 있습니까? – Peon

+2

중요 : PHP 매뉴얼 **은 mysql_xxx() 함수를 더 이상 사용하지 않기를 강력하게 권장합니다. 그들은 쓸모없고 안전하지 않습니다. 그들은 또한 더 이상 사용되지 않으므로 향후 PHP 버전에서 제거 될 것입니다. 대신에 mysqli_xx() 함수 나 PDO 라이브러리를 사용해야한다. – SDC

+0

오류 메시지가 표시되지 않습니다. – falcs

답변

1

유형 문자열

예를 들어

으로 개체를 캐스팅 : -

$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 객체를 캐스팅 입력 한?

또한 ") (NOW, (UID, 날짜, 도이, 제목, 연도, 저널) VALUES ('1'심판 INTO INSERT, '"

. $ 도이을. "'다음 쿼리를 시도 ' ". $ title." ',' ". $ year." ',' ". $ journal." ') ";

관련 문제