Durante l'analisi di alcuni libri SQL ho trovato che gli esempi tendono a utilizzare punti interrogativi (?
) nelle loro query. Cosa rappresenta?Che cosa rappresenta un punto interrogativo nelle interrogazioni SQL?
risposta
Il ?
è un parametro senza nome che può essere compilato da un programma che esegue la query per evitare SQL injection.
Potete fornire un esempio di questo? – Brad
Rappresenta normalmente un parametro che deve essere fornito dal client.
È un parametro. È possibile specificarlo durante l'esecuzione della query.
Non penso che abbia alcun significato in SQL. Potresti guardare le istruzioni preparate in JDBC o qualcosa del genere. In tal caso, i punti interrogativi sono segnaposto per i parametri della dichiarazione.
Il ?
deve consentire Parameterized. Questa query con parametri è di consentire il valore specifico del tipo quando si sostituisce lo ?
con il rispettivo valore.
Questo è tutto.
Ecco un numero reason del motivo per cui è preferibile utilizzare la query con parametri. Fondamentalmente, è più facile leggere e fare il debug.
Quello che stai vedendo è una query con parametri . Vengono spesso utilizzati durante l'esecuzione di SQL dinamico da un programma.
Ad esempio, invece di scrivere questo (nota: pseudocode):
ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = 7")
result = cmd.Execute()
si scrive questo:
ODBCCommand cmd = new ODBCCommand("SELECT thingA FROM tableA WHERE thingB = ?")
cmd.Parameters.Add(7)
result = cmd.Execute()
Questo ha molti vantaggi, come probabilmente è ovvio. Uno dei più importanti: le funzioni della libreria che analizzano i parametri sono intelligenti e assicurano che le stringhe vengano scappate correttamente. Ad esempio, se scrivi questo:
string s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE (name = '" + s + "')"
cmd.Execute()
Cosa succede quando l'utente inserisce questo?
Robert'); DROP TABLE students; --
(risposta è here)
Write questo, invece:
s = getStudentName()
cmd.CommandText = "SELECT * FROM students WHERE name = ?"
cmd.Parameters.Add(s)
cmd.Execute()
Poi la libreria disinfettare l'ingresso, producendo in questo modo:
"SELECT * FROM students where name = 'Robert''); DROP TABLE students; --'"
Non tutti i DBMS utilizzare ?
. MS SQL utilizza denominati parametri, che io considero un enorme miglioramento:
cmd.Text = "SELECT thingA FROM tableA WHERE thingB = @varname"
cmd.Parameters.AddWithValue("@varname", 7)
result = cmd.Execute()
- 1. Che cosa significa il punto interrogativo nel GSP/Grails?
- 2. cosa è l'uso del punto interrogativo in SQL
- 3. Che cosa significa questo punto interrogativo nel flusso:
- 4. Cosa significa punto interrogativo uguale a CoffeeScript?
- 5. Cosa fa l'operatore unario punto interrogativo (?)?
- 6. Erlang: cosa significa sintassi del punto interrogativo?
- 7. Che cosa rappresenta un doppio nel server sql?
- 8. Che cosa rappresenta 0x80020101?
- 9. Cosa rappresenta $ 0 nelle chiusure in Swift?
- 10. Sostituire un punto interrogativo (?) Con (\\?)
- 11. Punto interrogativo in JavaScript
- 12. Che cosa rappresenta un punteggio Classifier bayesiano?
- 13. Segmento percorso MVC con un punto interrogativo?
- 14. Doppio punto interrogativo, come funziona?
- 15. Punto interrogativo nella direttiva Richiede
- 16. Che cosa rappresenta la classe [B rappresenta in Java?
- 17. Cosa significa il triplo punto interrogativo in scala?
- 18. Che cosa significa il punto interrogativo alla fine di un css include url do?
- 19. Cosa significa Punto interrogativo in Xcode Project Navigator?
- 20. Cosa significa "?" simbolo (punto interrogativo) significa in Scala?
- 21. Cosa significa l'operatore del punto interrogativo in Ruby?
- 22. Come inserire un punto interrogativo sopra \ leq?
- 23. Generics e il punto interrogativo
- 24. Sinatra e il punto interrogativo
- 25. AggregateException - Che cosa rappresenta AggregateException.Flatten(). InnerException?
- 26. Informazioni sul punto interrogativo nell'espressione regolare
- 27. Interrogativo SQL interessante
- 28. Cosa rappresenta il doppio [,,]?
- 29. Cosa rappresenta "\ u001B [J"?
- 30. Cosa fa il punto interrogativo in un vincolo con un angolo isolato angolare?
Potrebbe fornire il codice per la ricerca? – Gage
Suppongo che siano variabili nelle istruzioni preparate, ma dovresti pubblicare quella particolare query per essere sicuro. – kennytm
@Mitch Wheat, significa semplicemente che puoi ottenere aiuto dai geni qui abbastanza felicemente (se hai bisogno di risposte esperte). –