2014-04-30 3 views
0

Salut j'ai un lit contre, mais je reçois toujours une erreur MySQL:SET UPDATE reçoit une erreur MySQL

Erreur MySQL: 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 « » lit «) VALUES (» 2 «) où id = « 20 » » à la ligne 1

$reads = $row['reads']+1; 
    $newsid = $row['id'];        

    if(!$query = $db->query("UPDATE cmsss_news_articles SET reads = '$reads' WHERE id = '$newsid'")) { 
    echo "<center><b>Error, cant update row</b></center>"; 
    } 

Pouvez-vous s'il vous plaît aidez-moi où est l'erreur?

Répondre

5

reads est un reserved word in MySQL. Échappez-le avec des backticks.

UPDATE cmsss_news_articles 
SET `reads` = '$reads' 
... 
+0

qui est parfait :) –

+0

+1 pour le pour le lien. –

0

Vous pouvez également perdre la variable d'incrémentation pour gagner en performance et en simplicité.

$newsid = $row['id'];        

    if(!$query = $db->query("UPDATE cmsss_news_articles SET `reads` = `reads` + 1 WHERE id = '$newsid'")) { 
     echo "<center><b>Error, cant update row</b></center>"; 
    } 
+1

En dépit d'être une réponse correcte, les réponses de code seulement ne sont pas bonnes pour apprendre __why__ quelque chose n'a pas fonctionné. Vous devriez expliquer pourquoi l'ajout de dos en arrière fait une différence. – naththedeveloper

+0

Désolé, était toujours en cours d'édition, mais votre droit! – sidneydobber

0

Reads est un mot clé inverse dans MySQL, donc mis en backquotes.

essayez ceci:

if(!$query = $db->query("UPDATE cmsss_news_articles SET `reads` = '$reads' WHERE id = '$newsid'")) {            ^^ 
    echo "<center><b>Error, cant update row</b></center>"; 
    }