tutto quello che voglio fare è inviare una query comeSQLite: lista legano dei valori a "DOVE col IN (: PRM)"
SELECT * FROM table WHERE col IN (110, 130, 90);
Così ho preparato la seguente dichiarazione
SELECT * FROM table WHERE col IN (:LST);
Poi io uso
sqlite_bind_text(stmt, 1, "110, 130, 90", -1, SQLITE_STATIC);
Purtroppo questo diventa
SELECT * FROM table WHERE col IN ('110, 130, 90');
ed è inutile (notare le due citazioni singole aggiuntive). Ho già provato a mettere extra 'nella stringa, ma loro sono fuggiti. Non ho trovato un'opzione per disattivare l'escaping o impedire che il testo venga racchiuso tra virgolette singole. L'ultima cosa che posso pensare non è usare una dichiarazione preparata, ma la prenderei solo come ultima opzione. Avete idee o suggerimenti?
Grazie
Edit:
Il numero di parametri è dinamico, quindi potrebbe essere tre numeri, come nell'esempio di cui sopra, uno o dodici.
Grazie per la risposta. Non l'ho menzionato nel mio post originale (appena modificato), ma il numero di parametri è dinamico. In realtà continuo a rispondere come "non possibile", il che significa che semplicemente non posso usare una dichiarazione preparata. – Sebastian
No, Sebastian, il mio suggerimento è di creare dinamicamente un'istruzione SQL con un numero variabile di parametri e quindi chiamare sqlite_bind_in in un ciclo per ogni parametro. Dovrebbe funzionare per te. Aggiungerò pseudo-codice alla risposta. –
Per poter chiamare sql_bind_ * è necessario prima chiamare sql_prepare. Non vedo il punto di creare dinamicamente un'istruzione, prepararla, utilizzare bind, eseguire e finalizzare, invece di inserire i parametri direttamente durante la creazione della query, preparare, eseguire e finalizzare. Ad ogni modo dovrei chiamare sql_prepare ogni volta che voglio eseguire la query ed è quello che vorrei salvare e fare una sola volta. – Sebastian