Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

377
Visualizações
¿Es posible usar (con PHP) declaraciones preparadas que se hayan declarado previamente en mysql CLI?

En mysql CLI he preparado una declaración como esta:

 PREPARE registrarUser FROM 'INSERT INTO Users (Users_name,Email,pass) values (?,?,?)'

En mi base de datos, las declaraciones preparadas deben hacerse de esta manera, en lugar de usar un método php como este:

 $conn->prepare("INSERT INTO Users (Users_name,Email,pass) VALUES (?, ?, ?)");

Entonces no puedo usar la declaración preparada o vincular argumentos.

Probé esta consulta que imita las declaraciones requeridas en mysql CLI

 $query = sprintf(' SET @Users_name = "%s"; SET @Email= "%s"; SET @pass = "%s"; EXECUTE registrarUser USING @Users_name, @Email, @pass;',$Users_name,$Email,$pass);

Pero devuelve el siguiente error de sintaxis:

 Errormessage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SET @Email= "eds@gmail.com"; SET @pass = "Thinkshap2"; EXECUTE registrar' at line 2

¿Alguien sabe si hay una manera de hacerlo? Muchas gracias por adelantado;

over 4 years ago · Santiago Trujillo
2 Respostas
Responde à pergunta

0

No es posible.

Del manual de MySQL

El alcance de una declaración preparada es la sesión dentro de la cual se crea...

  • Una declaración preparada creada en una sesión no está disponible para otras sesiones.
over 4 years ago · Santiago Trujillo Relatório

0

No, no es posible. Las declaraciones preparadas tienen el alcance de la sesión. Cada vez que abre una nueva conexión en PHP, abre una nueva sesión de MySQL. Puede usar PREPARE y EXECUTE en PHP, pero ambas operaciones deben realizarse en la misma sesión.

En otras palabras, las declaraciones creadas con PREPARE no persisten en el servidor de la base de datos. Solo existen durante el tiempo de vida de la sesión actual.

La razón por la que obtiene un error de sintaxis en PHP es porque ha concatenado varias declaraciones SQL juntas. No puede hacer eso de forma predeterminada en PHP debido a consideraciones de seguridad. Ejecute cada uno por separado. Por ejemplo, esto funciona:

 $stmt = $mysqli->query("PREPARE registrarUser FROM 'SELECT ?'"); $stmt = $mysqli->query("EXECUTE registrarUser USING 32");

Advertencia El uso de PREPARE y EXECUTE desde PHP anula el propósito principal del uso de declaraciones preparadas en PHP. La principal ventaja es que puede separar las variables de la sintaxis SQL. No puedes hacer eso con PREPARE y EXECUTE . Es por eso que tanto PDO como mysqli han preparado declaraciones. Use mysqli::prepare() y mysqli_stmt::execute()

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda