2010-07-27 18 views
1

Je ne peux pas croire que j'ai ce problème. J'ai regardé et regardé mais je ne peux pas voir ce qui ne va pas. Je déteste ce message d'erreur.Je deviens fou [erreur de syntaxe]

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 ' poster_ip, message, posted, thread_id INTO posts ' at line 1 



mysql_query("INSERT poster, poster_ip, message, posted, thread_id 
       INTO posts 
       VALUES (
    {$post_info['poster']}, 
    '".mysql_real_escape_string($_SERVER['REMOTE_ADDR'])."', 
    '".mysql_real_escape_string($post_info['message'])."', 
    {$post_info['posted']}, 
    {$post_info['thread_id']}") or die (mysql_error()); 

Répondre

7

Your SQL syntax is wrong.

Vous devez utiliser quelque chose de similaire à:

INSERT INTO posts (poster, poster_ip, message, posted, thread_id) VALUES (...) 
3

Peut-être que vous devriez regarder le doc;) Insert Syntax

Si vous allez mettre les noms de colonnes, vous devez le mettre après la nom de la table.

Exemple: INSERT INTO table (col1, col2) VALUES (val1, val2)

1

On dirait une bonne occasion de pratiquer certaines techniques de débogage. Essayez de construire la chaîne que vous passez à la fonction et de l'assigner à une variable, puis renvoyez cette variable pour voir ce que vous passez réellement à la fonction. Vous pouvez apprendre beaucoup de choses sur les raisons pour lesquelles vous obtenez des erreurs. En outre, il serait utile de connaître les types de données des colonnes dans lesquelles vous insérez des valeurs.

0

J'ai écrit ce code pour vous montrer pourquoi les tableaux sont utiles pour la génération de requêtes et moins susceptibles de générer une erreur de syntaxe si vous devez ajouter plus de champs dans le futur.

$fields = array('poster, poster_ip, message, posted, thread_id'); // Our fields 
$table = 'posts'; // Our table name 
$values = array(
    $post_info['poster'], 
    $_SERVER['REMOTE_ADDR'], 
    $post_info['message'], 
    $post_info['posted'], 
    $post_info['thread_id'] 
); 
$values = array_map('mysql_real_escape_string', $values); // Secure all inputs 
// Generate query 
$query = "INSERT INTO $table (" . implode(',', $fields) . ") VALUES ('" . implode("','", $values . "')"; 
// Run query 
$result = mysql_query($query) or die('query error: ' . mysql_error());