2010-09-08 106 views
0
上使用magic_quotes

我一直在努力讓我的數據插入到我的表中。數據從xml文件中拉入數組中,並且echo'ing結果正常,但插入失敗。INSERT在服務器上失敗,在

$dbhost = 'XXXX'; 
$dbuser = 'XXXX'; 
$dbpass = 'XXXX'; 

$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql'); 

if($conn) 
{ 
echo "Database Connection Successfull...<br /><br />"; 
} 

$dbname = 'a4027212_footy'; 
mysql_select_db($dbname) or die('Couldnt connect to database table'); 

if($dbname) 
{ 
echo "Database ".$dbname." Selected..<br /><br />"; 
} 

    $tweetmeme = "http://api.tweetmeme.com/stories/popular.xml?category=sports-soccer&count=30" ; 

    $xml = @simplexml_load_file($tweetmeme) or die ("no file loaded") ; 
    if($xml) 
    { 
echo "Tweetmeme XML loaded with ".count($xml->stories->story)." stories in the file..<br /><br />"; 
    } 
if(get_magic_quotes_gpc()) 
{ 
echo "Magic Quotes is ON<br /><br />"; 
} 
foreach($xml->stories->story as $story) 
{ 
    $title=$story->title; 
$title=mysql_real_escape_string($title); 

$url=$story->url; 
$url=mysql_real_escape_string($url); 

$media_type=$story->media_type; 
$media_type=mysql_real_escape_string($media_type); 

$created=$story->created_at; 
$created=mysql_real_escape_string($created); 


$url_count=$story->url_count; 
$url_count=mysql_real_escape_string($url_count); 

$comment_count=$story->comment_count; 
$comment_count=mysql_real_escape_string($comment_count); 

$excerpt=$story->excerpt; 
$excerpt=mysql_real_escape_string($excerpt); 

$sql = "INSERT INTO ft_tweets (title,url,media_type,created_at,mention_count,comment_count,excerpt) VALUES ($title,$url,$media_type,$created,$url_count,$comment_count,$excerpt)"; 

$result = mysql_query($sql) or die(mysql_error()); 
if($result) 
{ 
echo "added to database<br />"; 
} 
} 
echo "<br /><br />"; 

香港專業教育學院被告知,插入會如果有字符串和mysql_real_escape_string(在特殊字符)失敗會幫助,但處理不當。我曾嘗試過,但沒有逃脫無濟於事。

返回的錯誤消息是:您的SQL語法中有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以獲取在off附近使用的正確語法。腳踝在這裏看起來很糟糕。 ?在Twitpic),mysql_real_escape_string(http://twitpic.c'在行1

和失敗的SQL插入

+0

該代碼是一個爛攤子。我重新格式化了所有無關的換行符,但請在下次查看預覽時確保它看起來可讀。 – EboMike 2010-09-08 01:19:24

+0

注意到,我只是複製粘貼,我會預覽下一次:) – 2010-09-08 01:35:21

回答

1

身在何方是「關」開始是你遇到麻煩的性格。我想呼應先出$ sql,然後是quit();命令。然後,你會看到薩維恩提到的字符串中缺少的引號。

我還發現this引用有魔術引號服務器開啓:

<?php 
function check_input($value) 
{ 
// Stripslashes 
if (get_magic_quotes_gpc()) 
    { 
    $value = stripslashes($value); 
    } 
// Quote if not a number 
if (!is_numeric($value)) 
    { 
    $value = "'" . mysql_real_escape_string($value) . "'"; 
    } 
return $value; 
} 
+0

感謝您的幫助 – 2010-09-08 01:26:35

+0

Upvoted。感謝分享Scott。 – 2011-04-04 07:36:25

2
$sql = "INSERT INTO ft_tweets (title,url,media_type,created_at,mention_count,comment_count,excerpt) VALUES ($title,$url,$media_type,$created,$url_count,$comment_count,$excerpt)"; 

哪裏圍繞$標題單引號,$網址等它應該是:

$sql = "INSERT INTO ft_tweets (title,url,media_type,created_at,mention_count,comment_count,excerpt) VALUES ('$title','$url','$media_type','$created','$url_count','$comment_count','$excerpt')"; 

Ofcourse,你可以忽略單引號數字領域。

+0

嘗試用變量周圍的單引號,仍然沒有運氣,它在同一地點失敗 – 2010-09-08 01:22:07

+0

你應該提到你得到的錯誤 – 2010-09-08 01:22:43

+0

這工作,我只是上傳到我的FTP dc'd後,錯誤的文件夾非常感謝。 – 2010-09-08 01:26:05

相關問題