Parse error: syntax error, unexpected ';'

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Parse error: syntax error, unexpected ';'

Re: Parse error: syntax error, unexpected ';'

par xTG » 30 mars 2012, 23:01

Il y a pourtant 5 exemples sur php.net pour cette fonction... Je n'ose imaginer où tu as trouvé cette syntaxe par contre... Tu l'as inventé j'espère ?
Sinon supprimes vite ce site de tes favoris.

Il y a aussi une page concernant les fonctions en PHP qui montre que les arguments ne sont pas séparés par des points virgules. ;)

Re: Parse error: syntax error, unexpected ';'

par mounlight » 30 mars 2012, 19:03

Bon j'ai essayer comme un grand et voila ce que j'ai obtenue:
$query = sprintf("SELECT * FROM contacts 
WHERE phone='".$txt."' OR last LIKE '%".$txt."%'"; 
mysql_real_escape_string($phone);
mysql_real_escape_string($last));
J'ai tester et ai trouver que c'est cette partie qui ne va pas:
OR last LIKE '%".$txt."%'"; 
Est ce que vous auriez un un article ou site qui explique 'bien" et ne me pointer pas vers php.net car je ne le trouve pas "bien" justement ou tout du moins sur ce sujet.

Merci d'avance

Re: Parse error: syntax error, unexpected ';'

par mounlight » 30 mars 2012, 11:45

J'entend bien, je demandais juste avant que je commence à chercher pour m'éviter une recherche si vous m'expliquiez que c'était inutile... :)

En tout cas merci de votre aide précieuse =D>

Re: Parse error: syntax error, unexpected ';'

par moogli » 30 mars 2012, 07:15

Si mais faut bien que tu boss un peu :mrgreen:

Les réponses ne sont pas a prendre au pieds de la lettre, elles sont la pour te guider et te faire comprendre la mécanique du langage.
Donc oui mysql_real_escape_string est à ajouter.

Pour info : sprinte ne protége de rien il format "c'est tout" ;)

@+

Re: Parse error: syntax error, unexpected ';'

par mounlight » 30 mars 2012, 01:11

Ok, parfait ca marche :D
Juste petite question pour finir: N'y a-t-il pas un risque d'injection SQL vu que pour le code que tu viens de proposer je n'utilise pas sprintf et mysql_real_escape_string ?

Merci

Re: Parse error: syntax error, unexpected ';'

par albat » 29 mars 2012, 22:43

Allez, je te donne la réponse parce que ce n'est pas le plus facile à la lecture :
$req = "SELECT * FROM contacts WHERE phone='".$txt."' OR last LIKE '%".$txt."%'";
En résumé :
- tu avais oublié d'extraire les variables des chaines de caractères
- tu avais oublié les points, opérateurs de concaténation
- tu avais oublié le $ initial qui identifie une variable, telle $txt (et non txt)

Re: Parse error: syntax error, unexpected ';'

par albat » 29 mars 2012, 22:31

De plus j'ai réussis a déterminer que en fait ce qui me cause probleme c'est :
    WHERE phone='$txt' OR last LIKE '%txt%'",
et plus précisément la partie avec le LIKE. Le problème c'est que j'ai beau cherché, je pense que la syntaxe est bonne...
Ben... pour être franc... la syntaxe est mauvaise. :lol:

Re: Parse error: syntax error, unexpected ';'

par mounlight » 29 mars 2012, 19:23

Bon alors j'ai un peu changer de méthode et j'ai maintenant le code suivant:
mysql_select_db($database) or die('Unable to select database');

$txt = htmlspecialchars($_GET['name']);
$pos1 = stripos($txt,'k');

if($pos1==0)
  { $query = sprintf("SELECT * FROM contacts
    WHERE first='$txt'",
    mysql_real_escape_string($first));
  }
if($pos1===false)
  { $query = sprintf("SELECT * FROM contacts
    WHERE phone='$txt' OR last LIKE '%txt%'",
    mysql_real_escape_string($phone),
    mysql_real_escape_string($last));
  }

$result = mysql_query($query) or die(mysql_error()); // Plus astucieux comme ça

echo "<b><center>Database Output</center></b><br><br>";

while ($ligne = mysql_fetch_assoc($result))
      { extract($ligne);
        echo '<b>'.$first.' '.$last.'</b><br>Phone: '.$phone.'<br>Mobile: '.$mobile.
             '<br>Fax: '.$fax.'<br>E-mail: '.$email.'<br>Web: '.$web.'<br><hr><br>';
      }
?>
De plus j'ai réussis a déterminer que en fait ce qui me cause probleme c'est :
    WHERE phone='$txt' OR last LIKE '%txt%'",
et plus précisément la partie avec le LIKE. Le problème c'est que j'ai beau cherché, je pense que la syntaxe est bonne...

Vous avez des suggestions ?

Re: Parse error: syntax error, unexpected ';'

par moogli » 29 mars 2012, 09:48

Pour le debugage je dirais simplement de ne pas mettre la requête dans le mysql_query mais d'utiliser une variable que tu pourra afficher afin de voir pourquoi ta requête est foireuse.
L'erreur de syntaxe en SQL, c'est comme en php ça peu. Venir n'importe quand ;)

@sirakawa : je ne suis pas non plus adepte du extract, que ce passe t il s'il y a un champ qui s'appel result ? (et on a vu plus con ;) ).
Avec pdo y a fetchAll();
Avec l'extension mysql pas trop le choix pour l'equivalent
<?php
while($data = mysql_fetch_assoc($query)){
$allData[] = $data;
}
?>
Après faut voir le dit traitement parce que la plus part du temps le serveur SQL peux le faire ;)

@+

Re: Parse error: syntax error, unexpected ';'

par albat » 28 mars 2012, 21:02

Quelle requête est en cause ?

Re: Parse error: syntax error, unexpected ';'

par sirakawa » 28 mars 2012, 20:23

Ben, tu crées un tableau et tu le remplis. En PHP ou en JS.

Mais ce n'est pas la question posée ici... ;)
et on remplit le tableau avec extract?
Même si ce n'est pas la question du moment, il est vraisemblable qu'elle est sous-jacente, car quel serait l'intérêt d'afficher séquentiellement des informations qu'on ne peut pas exploiter?

Re: Parse error: syntax error, unexpected ';'

par mounlight » 28 mars 2012, 19:57

Bon ben au moins je change d'erreur maintenant j'ai :
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #3' at line 1

J'ai chercher et il semblerais que cette erreur soit prooquer quand on utilise mal INSERT, or je ne l'utilise pas.. puis-je avoir une indication sur ou se trouve mon erreur ?

Merci encore,

Re: Parse error: syntax error, unexpected ';'

par albat » 28 mars 2012, 17:00

Ben, tu crées un tableau et tu le remplis. En PHP ou en JS.

Mais ce n'est pas la question posée ici... ;)

Re: Parse error: syntax error, unexpected ';'

par sirakawa » 28 mars 2012, 16:46

Elle affiche, l'un après l'autre, tous les enregistrements de la table qui ont été sélectionnés par la requête.
Je ne vois pas le souci.
Et si par hasard on a besoin de faire un traitement de ces données autre que de les afficher par un echo, ou simplement de les stocker en local, comment fait-on?

Re: Parse error: syntax error, unexpected ';'

par albat » 28 mars 2012, 15:12

Après les parenthèses, ce sont les guillemets qui te posent problème ! :lol:
<?php
mysql_select_db($database) or die('Unable to select database');

$txt = htmlspecialchars($_GET['name']);
echo $txt;
$pos1 = stripos($txt,'k');

if($pos1==0)
  { $query = mysql_query("SELECT * FROM contacts WHERE first='".$txt."'"); // T'avais oublié un guillemet fermant, là
  }
if($pos1===false)
  { $query = mysql_query("SELECT * FROM contacts WHERE phone='".$txt."' or last LIKE '%".$txt."%'");
  }

$result = mysql_query($query) or die(mysql_error()); // Plus astucieux comme ça

echo "<b><center>Database Output</center></b><br><br>";

while ($ligne = mysql_fetch_assoc($result))
      { extract($ligne);
        echo '<b>'.$first.' '.$last.'</b><br>Phone: '.$phone.'<br>Mobile: '.$mobile.
             '<br>Fax: '.$fax.'<br>E-mail: '.$email.'<br>Web: '.$web.'<br><hr><br>';
      }
?>