2013-08-10 14 views
-1

Lorsque j'appelle ma fonction une erreur de syntaxe MySQL apparaît, des idées?Erreur de syntaxe MySQL Erreur

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 « » à la ligne 1

function getComments1() { 
    $query = mysql_query("SELECT * FROM comments") or die(mysql_error()); 
    while($post = mysql_fetch_assoc($query)) { 
     echo $post['Author']; 

    } 
} 

function addComment($cName, $cContent) { 
    $query = mysql_query("INSERT INTO comments VALUES(null,'$cName','$cContent'") or die(mysql_error()); 
} 

<?php 
include('includes/functions.php'); 
mysql_set_charset ("utf8"); 

if(isset($_POST['submit'])) { 
    if(isset($_POST['CommentName'])) { 
     if(isset($_POST['CommentContent'])) { 
      addComment($_POST['CommentName'],$_POST['CommentContent']); 
      header("Location: derger.php"); 
     } else { "text missing"; 

     } 

    } else { 
     echo "name missing"; 
     include('herger.php'); 
    } 

} else { 
    header("Location: werger.php"); 
} 
?> 
+1

probablement en raison de charactors sans échappement, utilisez PDO ou mysqli (Parametrize Query) pour empêcher l'injection SQL. –

+1

En ajoutant au commentaire @ Akam, l'extension 'mysql' est obsolète en PHP 5.5 et il est conseillé d'utiliser mysqli ou PDO à la place. Plus sur cela ici: http://www.php.net/manual/en/mysqlinfo.api.choosing.php – Cokegod

Répondre

3
("INSERT INTO comments VALUES(null,'$cName','$cContent'") 

Vous ne fermez pas les valeurs. devrait être:

("INSERT INTO comments VALUES(null,'$cName','$cContent')") 

Aussi, comme tout le monde ici vous le rappellera, les fonctions mysql_ sont obsolètes. Vous devriez utiliser PDO ou MySQLi. Une simple recherche google sur l'un ou l'autre vous donnera beaucoup de ressources pour la transition vers.

2

L'erreur est qu'il vous manque la parenthèse fermante dans votre requête d'insertion. Mettre à jour la requête comme suit:

$query = mysql_query("INSERT INTO comments VALUES(null,'$cName','$cContent')") or die(mysql_error()); 

Notez la parenthèse fermante après '$cContent'.

D'autres problèmes notables sont, vous utilisez toujours les extensions mysql_ qui sont obsolètes et vous devez commencer à utiliser mysqli ou pdo. S'il vous plaît noter également que votre mise en œuvre actuelle est vulnérable à l'attaque par injection SQL, vous devez à tout le moins mettre en œuvre mysql_real_escape_string. S'il vous plaît jeter un oeil à https://www.owasp.org/index.php/SQL_Injection