2010-11-27 22 views
0

j'ai utilisé preg_split pour supprimer les informations de balise de message Tweet id comme, cela est sortie d'origine de TwitterSQL Erreur de syntaxe lors de l'utilisation preg_split ("/, /",

tag

: search.twitter.com 2005: 7551711354822656

J'applique preg_split pour se débarrasser de 'tag: search.twitter.com'. comme

$arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))"); 
    $msg_ID = $arr[1]; 

& insert $ mSG_ID [1] dans la table maintenant je demande même à message contenu dont twitter sortie est

#DIYse_D DELIVERAB: twitter messages 1, 9th OCT 2010 

Je demande preg_split pour se débarrasser des 'messages twitter 1' de comme

$arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))"); 
    $msg = $arr[1]; 

& insert $ msg [1] dans la table mais il soulève la syntaxe SQL Erreur. OK, une chose ici est que dans la sortie de $ status-> id, twitter a ajouté une balise au début de l'identifiant alors qu'ici il a ajouté "twitter messages 1" dans le contenu original du message.
est ici SQL Insérer une requête

INSERT INTO msg2(id,msg,msg_id,depth,name) VALUES ('','$msg','$msg_ID','0','$name') 
+0

Pourriez-vous ajouter vos commandes SQL? – thejh

+0

@thejh, j'ai ajouté l'instruction d'insertion sql à OP – XCeptable

+0

Pourquoi avez-vous besoin d'utiliser 'preg_split()' juste pour diviser par une virgule? – BoltClock

Répondre

2
$arr = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->id))"); 
         ^--here           ^--here 
$arr2 = preg_split("/,/", "strip_tags(mysql_real_escape_string($status->content))"); 
          ^---here            ^---here 

Les quatre doubles guillemets je l'ai indiqué tourner les morceaux de « code » dans des chaînes de texte littéral. Vous n'essayez pas de diviser les résultats d'un appel de fonction strip_tags, vous essayez de diviser une chaîne qui dit "strip_tags (etc ...)". Supprimez les guillemets afin que PHP puisse voir qu'il s'agit d'un appel de fonction, et non d'une chaîne.

Puisqu'il n'y a aucune virgule dans cette chaîne littérale, il n'y aura aucune valeur $arr2[1], donc vous essayez d'insérer un blanc (ou un null) dans la base de données.

De plus, modifier la séquence de fonction:

mysql_real_escape_string(strip_tags(etc...)) 

Échapper pour insérer la base de données devrait être la dernière chose que vous faites avant de l'insérer. Il est possible que strip_tags change l'ordre des échappements et produise une chaîne 'mauvaise', vous laissant ouvert aux attaques par injection SQL.

+0

merci beaucoup – XCeptable