2010-06-26 7 views
2

je reçois le message d'erreur suivant lorsque je tente cette requête:Query ne fonctionne pas

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

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

(18, , 'Y', NOW())' at line 1 

Tout dans mon code fonctionne sauf cette ligne. Je sais que cela a à voir avec la variable de tableau $ _POST, mais je ne connais pas la syntaxe correcte.

Si vous avez besoin de plus de code, je serai heureux de l'inclure.

+0

Pourriez-vous poster plus de code? Quelle est la '$ query' complète? – phimuemue

Répondre

3

Votre utilisation de guillemets simples autour $i est faux:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

Cela entraînera $ i à prendre littéralement au lieu de la valeur de $ i étant utilisé (ce que je suppose que vous avez besoin).

Cela devrait fonctionner:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())"; 
+0

Juste ce dont j'avais besoin.J'ai essayé presque chaque variable des guillemets simples et des accolades excepté celui-là. Merci. – aliov

2

Si vous voulez mieux, aidez, montrez le code qui envoie les variables post (probablement un formulaire ou une requête AJAX).

Mais votre problème réside peut-être ici:

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())";

Le poste évaluerait à quelque chose comme $_POST['type']['1']. Vous voulez probablement $_POST['type'][1].

Donc, essayez ceci:

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())";

0

Comme déjà mentionné.

$query .= "($tid, {$_POST['type']['$i']}, 'Y', NOW())"; 

devriez lire

$query .= "($tid, {$_POST['type'][$i]}, 'Y', NOW())"; 

curieux de savoir pourquoi vous avez "{}" en cours d'utilisation. Cela dit, vous devriez toujours éviter de taper des variables de $ _GET ou de $ _POST directement dans le code à utiliser dans les requêtes, ou tout autre aspect de votre site.

Vous devriez vraiment prendre l'habitude ou passer la variable via quelque chose que vous avez pré-déterminé. Pour ne pas mentionner, allez-vous échapper ces variables avant d'exécuter la requête SQL.

Jetez un oeil à

http://php.net/mysql_real_escape_string http://php.net/pdo.quote

Si vous avez le temps, enquêter sur pdo.