Heim >Datenbank >MySQL-Tutorial >PreparedStatement „executeQuery()': Warum ohne einen SQL-String-Parameter verwenden?
PreparedStatement-Syntaxfehler: Ein tieferer Einblick
Sie haben eine Fehlermeldung im Zusammenhang mit PreparedStatements festgestellt. Die Untersuchung Ihres Codes, insbesondere der selectSql1-Abfrage und der select1-Methode, offenbart ein subtiles Problem.
Das Problem liegt in der Verwendung der MethodeexecuteQuery von PreparedStatement. Ihre Methode select1 versucht derzeit Folgendes aufzurufen:
return this.stmt.executeQuery(sql);
wobei sql die SQL-Abfrage selbst ist. Dies ist nicht die richtige Art, eineexecuteQuery-Methode für ein PreparedStatement zu verwenden.
Lösung
Die Lösung besteht einfach darin, diese Zeile zu aktualisieren:
return this.stmt.executeQuery();
Durch das Entfernen des SQL-Parameters aus der MethodeexecuteQuery stellen Sie sicher, dass die interne Abfrage des PreparedStatements anstelle der rohen SQL-Zeichenfolge ausgeführt wird. PreparedStatements stellen Platzhalterparameter bereit, die in der SQL-Abfrage durch Fragezeichen (?) gekennzeichnet sind und dann an bestimmte Werte wie randNum gebunden werden.
Daher erfolgt der korrekte Aufruf von „executeQuery“ in diesem Kontext ohne Parameter, was das PreparedStatement ermöglicht führt seine interne Abfrage aus, die bereits mit Parameterwerten gebunden wurde.
Das obige ist der detaillierte Inhalt vonPreparedStatement „executeQuery()': Warum ohne einen SQL-String-Parameter verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!