Se stai cercando di fare quello che sembra che tu stia cercando di fare... non provare a farlo.
Questo non è ciò che è una dichiarazione preparata (o almeno non è quello che dovrebbe essere).
Il codice client non dovrebbe tentare di interpolare i valori nella stringa di query per generare una query "completata" da inviare al server per l'esecuzione. Questa è una ricetta per il disastro, per non parlare di un falso senso di sicurezza.
Le dichiarazioni preparate forniscono la dichiarazione con ?
segnaposto al server così com'è, dove il server "prepara" l'istruzione per l'esecuzione... e quindi il client invia i parametri al server ("associando" i parametri) per l'esecuzione. In questo modo, il server non sarà mai confuso su "quale parte è l'SQL" e "quale parte sono i dati", rendendo impossibile l'iniezione di sql e rendendo superflua la fuga e la sanificazione dei dati.
Se non stai comunicando direttamente con la C-API, dovresti chiamare i metodi nella tua libreria che ti espongono quelle stesse funzioni.