2010-09-08 5 views
0

J'ai eu du mal à obtenir mes données à insérer dans ma table. Les données sont extraites d'un fichier XML dans un tableau et l'écho des résultats est correct, mais il échoue lors de l'insertion.INSERT échoue sur le serveur avec magic_quotes sur

$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 />"; 

Ive été dit que l'insertion échouera s'il y a des caractères spéciaux dans la chaîne et mysql_real_escape_string() contribuerait mais il na pas. J'ai essayé avec et sans m'échapper en vain. Le message d'erreur renvoyé est: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de 'off'. La cheville est mauvaise ici. .? Sur Twitpic), mysql_real_escape_string (http://twitpic.c 'à la ligne 1

et il échoue sur l'insertion sql

+0

Ce code a été un gâchis. J'ai reformaté toutes les nouvelles lignes superflues, mais s'il vous plaît regardez l'aperçu la prochaine fois et assurez-vous qu'il semble lisible. – EboMike

+0

Noté, je viens de copier et coller, je vais voir la prochaine fois :) –

Répondre

1

droit où ce « off » commence est le personnage que vous rencontrez des problèmes avec. Je l'écho sur $ sql en premier, suivi d'un quit(); commander. Ensuite, vous verriez les citations manquantes autour des chaînes comme le mentionne Sabeen.

Je trouve également this qui référence le serveur ayant les guillemets magiques activé:

<?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

Merci pour l'aide –

+0

Upvoted. Merci d'avoir partagé Scott. –

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)"; 

Où sont les guillemets simples autour du titre $, $ url etc. Il devrait être:

$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')"; 

vous pouvez ignorer les Ofcourse guillemets simples pour les champs numériques.

+0

essayé avec les guillemets simples autour des variables et toujours pas de chance, il échoue au même endroit –

+0

Vous devriez mentionner l'erreur que vous obtenez –

+0

Cela a fonctionné, je viens téléchargé sur le mauvais dossier après mon FTP dc'd merci beaucoup c'est vraiment apprécié. –