2010-10-22 4 views
0

Hey ... donc j'ai essayé d'exécuter la requête ci-dessous et elle ne le fera tout simplement pas. J'ai vérifié:PHP/MySQL: Requête non traitée (erreur de syntaxe près de x sur la ligne 1)

  • Le nombre de champs dans le formulaire correspond au nombre de champs dans la table.
  • Le nombre de variables de session correspond également à ces nombres.
  • Que la requête actuelle contient les données à entrer avec un écho.
  • Que le nom de la table est correct.
  • Ces requêtes fonctionnent avec d'autres tables de la même base de données (elles DO).
  • occasion ou mourir (mysql_error(), pour obtenir la « syntaxe incorrecte » erreur
  • Reconstruit la table plusieurs fois

est ici la ligne qui est apparemment syntaxiquement problématique, si vous pouvez voir quelque chose de mal avec.. ou me diriger dans la bonne direction, je serais super reconnaissant que je suis à une perte maintenant! Serait-ce un problème de mémoire?

$sql = "INSERT INTO careBoiler (buyerID, date, sector, require, boilerMake, boilerModel, boilerType, heating, visit, deadline, budget, currcompany, specificreq) VALUES ('{$_SESSION['buyerID']}', now(), '{$_SESSION['cb']['sector']}', '{$_SESSION['cb']['require']}', '{$_SESSION['cb']['boilerMake']}', '{$_SESSION['cb']['boilerModel']}', '{$_SESSION['cb']['boilerType']}', '{$_SESSION['cb']['heating']}', '{$_SESSION['cb']['visit']}', '{$_SESSION['cb']['deadline']}', '{$_SESSION['cb']['budget']}', '{$_SESSION['cb']['currcompany']}', '{$_SESSION['cb']['specificreq']}')"; 
+0

Donnez-nous votre message d'erreur. – Marwelln

+0

C'est dans la question. Il dit "vérifier le manuel pour la version sql ... erreur de syntaxe près de require, boilerMake, etc" –

+0

Je ne vois pas ça n'importe où dans la question ...Et require est un mot-clé réservé, renommez votre colonne de table et vous allez bien –

Répondre

0

on dirait require est un MySQL reserved word que vous utilisez comme une colonne nom:

Pour résoudre ce problème, vous pouvez soit choisir un autre nom de colonne ou placez-le dans le dos les tiques:

$sql = "INSERT INTO careBoiler (buyerID, date, sector, `require`,... 
                ^ ^
+0

Oui, merci! ; o) –

1

En tant que stratégie de débogage général php/mysql

  1. Imprimez la requête réelle, avec les valeurs insérées. Parfois, cela seul rend le problème évident. Si vous l'avez, copiez + collez la requête dans phpMyAdmin/mysql workbench et consultez le message d'erreur qu'elle vous envoie. Si vous n'avez pas accès à l'un ou à l'autre, appelez mysql_error() dans le script php et voyez quelle erreur il vous donne.

+0

Merci, mais j'ai fait les deux avant de poster, comme je l'ai dit. Aucun n'a aidé le problème cependant! =/ –

+0

Dans ce cas, pourquoi ne pas poster ce qui a été imprimé plutôt que de faire deviner? –

+0

J'ai posté l'erreur dans le titre ...? –

0

Essayez d'utiliser or die($sql.' - '.mysql_error()); pour voir ce qu'il pense de son traitement.

+0

J'ai fait ça. - J'ai l'erreur que j'ai mise dans la question, et je ne peux trouver aucun problème de syntaxe en postant cette question ici. –

+0

Voir le message de Sam Dufel, ce que vous avez posté pourrait sortir n'importe quelle sorte d'erreur mysql inconnu à quiconque essayant d'aider si $ _SESSION ['cb'] ['secteur'] = 'dave est quelque chose ou autre' En fait, si vous pouviez poster un vidage de la structure de la table si vous mettez à jour votre message, alors je vais le mettre dans un phpmyAdmin à regarder. – BenWells

2

C'est un peu difficile parce que vous n'avez pas fourni le message d'erreur exact. Cependant, il se peut que vous utilisiez le nom de colonne 'require' qui est un mot-clé réservé dans MySQL. Le mot-clé "date" est également réservé, mais en raison de son utilisation répandue, il est autorisé. Essayez de changer le nom de la colonne 'require' dans votre table et votre requête.

Regardez ici pour plus d'informations; http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html

Si ce n'est pas le cas, veuillez fournir le message d'erreur complet.

+0

MERCI! L'erreur était que j'utilisais un mot-clé réservé et il est maintenant corrigé; o) –

0

tapez la date du champ comme `date`

Questions connexes