Wirklich einfache Abfrage, die Fehler in der SQL-Syntax gibt

Ich bin mir sicher, dass dies ein einfaches Versehen ist, aber ich kann es nicht eingrenzen:

global $wpdb; $tablename = $wpdb->prefix . "icrm_folders"; $sql = $wpdb->prepare( "SELECT * FROM %s", $tablename ); //$sql results in SELECT * FROM 'wp_icrm_folders' $result = $wpdb->get_results( $sql ); 

Dies scheint nichts zu bewirken! Mein Debugger zeigt einen Fehler im $ wpdb-Objekt unter last_error:

 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 ''wp_icrm_folders'' at line 1 

Jetzt habe ich die Abfrage SELECT * FROM 'wp_icrm_folders' direkt in phpmyadmin und das gibt mir einen Fehler, weil wp_icrm_folders ist innerhalb ' der Abfrage führt gut, wenn ich die Apostrophe entfernen oder ersetzen sie mit dem Grab Akzent / Zeichen.

PHP Version 5.3.3-7

MySQL Version 5.1.63

WordPress 3.5.1

Solutions Collecting From Web of "Wirklich einfache Abfrage, die Fehler in der SQL-Syntax gibt"

Verwenden Sie nicht $wpdb->prepare mit Tabellennamen. prepare wird Ihre Tabellennamen angeben, die zu falschem SQL führen.

Es ist auch unnötiger Overhead. Ihr Tabellenname sollte niemals und in Ihrem Fall nicht vom Benutzer eingegeben werden. Sie müssen ihm nicht entkommen. ‘prepare’ ist für die Verwendung von benutzerdefinierten Daten vorgesehen, z. B. Daten aus einem Formular oder einem $_GET Parameter.

Sie haben keine vom Benutzer bereitgestellten Daten, so dass Sie alles benötigen

 $wpdb->get_results("SELECT * FROM {$tablename}"); 

Ich denke, dass Sie die Anfrage nicht richtig schreiben. Also hier ist nur ein kleines Beispiel, vielleicht hilft es dir.

 $myrows = $wpdb->get_results( "SELECT id, name FROM mytable" ); 

und das ist es.