2017-07-03 3 views
-4

Hallo Ich habe SQL-Syntax-Fehler mit PHP, Mein Code istSQL-Syntax mit PHP-Session-Array Variable

 $_SESSION['reparray']=array(); 
    $com = $conn->prepare("select * from replies where rep_com_id=? AND rep_id NOT IN(".implode(',',$_SESSION['reparray']).") order by likes desc limit 10"); 
    $com->execute(array($_POST['id'])); 
    $fetchcom = $com->fetchAll(); 
    foreach ($fetchcom as $com_column){ 
    array_push($_SESSION['reparray'], $com_column['rep_id']); 

ich nur mit verschiedenen Variablen in anderen Seiten den gleichen Code verwende, seine Arbeit gut, aber hier bin ich Fehler wie folgt erhalten:

PDOException: SQLSTATE [42000]: Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version für die richtige Syntax entspricht, um in der Nähe von ') order likes desc limit 10' in Zeile 1 in C: \ wamp64 \ www \ randomz.com \ functions \ getrep.php in Zeile 9

zu verwenden
+6

Wenn Sie das Array gerade erst einstellen, bevor die Abfrage dann ist es leer und die 'IN' Aussage wird auch leer sein. –

+0

Im Zweifel sind 'echo' /' var_dump() '/' print_r() 'deine Freunde. – Mike

+0

Ich habe versucht, Werte im Array manuell hinzuzufügen, ja, es zeigt keine Fehler, aber die gleichen Kommentare mehr als 1 mal abgerufen .. –

Antwort

0

Es scheint, Sie wollen die reparray akkumulieren die id Werte, die Sie bereits in der Sitzung gesammelt haben. Aber wie das Array als ein leeres Array initialisiert wird, müssen die SQL diese Bedingung:

IN() 

... die ungültige SQL-Syntax ist.

Sie könnten das lösen, indem Sie einen Dummy-Wert mit Ihrem Array verketten; ein Wert, der nie in Ihrer Tabelle vorkommt. Nehmen wir an, -1 ist ein solcher Wert. Dann fügen Sie + [-1] wie folgt aus:

implode(',',$_SESSION['reparray'] + [-1]) 
+0

Ich versuchte es, zeigte mir keine Fehler, aber immer wieder dieselben Kommentare. –

+0

Ich habe die gleiche SQL-Abfrage nur mit verschiedenen Variablen, es funktioniert gut .. ist eine beliebige PHP max_session limit? Ich weiß nicht, –

+0

Aber "die gleichen Kommentare holen" ist eine andere Frage. Ihre Frage besagt "Ich habe einen SQL-Syntaxfehler ..." und der Titel hat wieder "SQL-Syntax". Jetzt sagen Sie mir, dass Sie keinen Fehler haben. Ist Ihre Frage nach dem Fehler gelöst? – trincot