2010-02-12 4 views
0

Je reçois l'erreur PHP redoutée
Erreur Dreaded PHP T_STRING sur requête MySQL retourné ressources

Parse error: syntax error, T_STRING inattendue dans/chemin/vers/le/fichier dans la ligne 14

Voici le code:

function getSomeList($userid) { 

    $query = "SELECT list_id, username_id FROM user_list WHERE username_id = 1"; 

    $result = mysql_query($query, $this->db); 
    if (! $result) { 
     $message = "Bad Query: getUserSiteList(): " . mysql_error() . "<br>"; 
     $message .= "Query: " . $query; 
     die($message); 
    } 
    $num = mysql_num_rows($result); 
    echo "Number of Rows Found " . $num . "!!<br>"; 
    echo get_resource_type($result) . "<br>"; 
    if ($num > 0) { 
     echo "No rows found, nothing to print so am exiting<br>"; 
    } 

    ... more code ... 

    } 

que tout fonctionne bien jusqu'à ce que le 'si' la déclaration où j'utilise la variable $ num. La variable $ resultat est a est un résultat mysql. Aussi, chaque fois que j'utilise la ressource $ result, j'obtiens cette erreur. Par exemple plus tard dans la fonction lorsque je tente d'accéder à une ligne de données à l'aide de cet appel:

while ($row = mysql_fetch_assoc($result)) { ... more code ... 

erreurs dehors avec la même erreur de T_STRING, (ce qui est après le retrait de l'instruction if montré ci-dessus.) Je suis à perte, quelqu'un a des suggestions où mon erreur est? Personnellement, je pense qu'il a quelque chose à voir avec la ressource retournée par la requête mysql. Quelque chose ne va pas avec ça.

Merci pour l'aide.

PS J'utilise PHP 5.3.0 et MySQL 5.1 sur OS X

+1

Regardez le 'var_dump' de' $ result' et '$ num' –

+0

Pour le contexte, est-ce que la ligne 14 fait référence à l'exemple de code que vous avez fourni? – thetaiko

+0

Pour répondre à thetaiko, Oui, la ligne dans l'erreur se réfère à la ligne correcte dans le code fourni. – bkoch

Répondre

0

Le problème n'était pas la syntaxe dans mon code. Il y avait du caractère caché qui causait des problèmes (pas^M, tout était développé sur OS X et fonctionnait sur le même système). J'ai copié et collé toutes les lignes de ma fonction d'origine et d'autres fonctions appelées pour créer une connexion MySQL simple et une requête qui a toujours l'erreur. La clé ici était que j'ai copié et collé. Donc, quel que soit le caractère étrange qui était dans le fichier source d'origine a été déplacé. J'ai créé un second fichier à tester et vérifié qu'il était cassé comme le premier. J'ai complètement supprimé la ligne incriminée et l'ai retapée. Et tout a fonctionné. J'ai fait un diff sur les 2 fichiers et c'était la sortie.

$ diff testquery.php testquery_same.php 
11,14c11,14 
< 
<  if ($result) { 
<   echo "No rows found, nothing to print so am exiting<br>"; 
<  } 
--- 
>  
>  if ($result) { 
>   echo "No rows found, nothing to print so am exiting<br>"; 
>  } 
16c16 


Comme vous pouvez le voir il y a quelque chose de différent, mais je ne sais pas quoi. Donc, la question est résolue, je ne suis pas sûr de la cause, mais je dois passer à autre chose.
Merci pour les réponses.

+0

J'ai eu ce problème en codant PHP depuis longtemps. Sous Windows et OS X. J'ai fait ce que je pouvais pour le résoudre, mais dernièrement, je dois réécrire presque toutes les affirmations que je fais. C'est super énervant et je ne sais pas quoi faire. Presque en train de laisser tomber PHP pour l'instant. Utiliser un texte sublime. – Mattis

2

L'erreur unexpected T_STRING se produire lorsque vous avez une chaîne dans un endroit, il est supposé ne pas être. Cela peut être dû au fait que vous avez oublié de concaténer quelque chose ou que vous avez oublié de placer un point-virgule après une ligne.

Alias: Il y a un problème avec compisition de votre code, pas est l'exécution.

Le code que vous avez fourni ne semble pas avoir le problème, et comme vous l'avez dit, prendre cette ligne ne semble pas résoudre le problème.

Peut-être que c'est ailleurs? Souvent, le problème est lié à la ligne ci-dessus celle donnée. Je suppose que la ligne au-dessus de cette instruction while n'a pas de point-virgule correct, ou est en quelque sorte syntaxiquement incorrecte.

+0

Finalement, je vais écrire une grande question longue expliquant les messages d'erreur PHP .... –

+0

L'exemple de code ci-dessus échoue avec l'erreur et est une version dépouillée de mon code de travail. Je suis passé par les questions normales de la recherche de la concaténation et des lignes non terminées et ne peux pas voir où se situe le problème. J'espérais que StackTrace pourrait détecter l'erreur dans le code fourni. J'ai mentionné l'instruction while, pour simplement signaler que le problème semble être avec la ressource retournée par la fonction mysql_query. Mais le problème devrait être dans le code fourni sauf s'il est en dehors de la fonction. Ces types d'erreurs peuvent-ils être transmis par des blocs de code externes? – bkoch

+0

Je ne crois pas qu'il puisse être reporté, car vous obtiendriez une erreur 'TxFUNCTION' inattendue si vous avez essayé de déclarer une fonction avec du mauvais code au-dessus. –