"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo concatenar cadenas con valores de forma eficaz en consultas SQL utilizando Go?

¿Cómo concatenar cadenas con valores de forma eficaz en consultas SQL utilizando Go?

Publicado el 2024-11-07
Navegar:315

How to Effectively Concatenate Strings with Values in SQL Queries Using Go?

Elaboración efectiva de consultas SQL en Go

Concatenar cadenas con valores en consultas SQL de texto puede ser un poco complicado en Go. A diferencia de Python, la sintaxis de formato de cadenas de Go se comporta de manera diferente, lo que genera errores comunes como el que se encuentra aquí.

Error de sintaxis de tupla

El fragmento de código inicial intenta utilizar un Python -tupla de estilo, que no es compatible con Go. Esto da como resultado un error de sintaxis:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        (val1, val2))

Tipos no coincidentes

Intentar convertir los elementos de la tupla como cadenas también falla debido a una falta de coincidencia de tipos:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %d`,
        val1, val2)

Evitar la discrepancia del operador

Convertir los parámetros como cadenas y concatenarlos con el operador %s funcionaría, pero no se recomienda. Este enfoque introduce el riesgo de que el operador no coincida:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %s AND column2_name = %s`,
        strconv.Itoa(val1), val2)

La solución Go

Para escribir correctamente una consulta SQL de texto con concatenación de valores en Go, use fmt.Sprintf de la siguiente manera:

query := fmt.Sprintf(`SELECT column_name FROM table_name
        WHERE column1_name = %d AND column2_name = %s`,
        val1, val2)

Esta sintaxis evita vulnerabilidades de inyección y garantiza una conversión de tipos adecuada.

Prevención de inyección

Para evitar ataques de inyección SQL, utilice siempre preparado declaraciones o proporcionar caracteres de escape para entradas proporcionadas por el usuario.

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3