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

248
Visualizações
Manejar variable vacía en una declaración preparada

A veces, mi secuencia de comandos recibe una solicitud $_POST["is_searchfield"] de un formulario. Entonces quiero usar esta variable como parte de una cláusula "Dónde" de una consulta MySQL. De lo contrario, esta parte de la cláusula "Dónde" no debería afectar al resto de la consulta.

Para la consulta utilizo una declaración preparada.

Si $_POST["is_searchfield"] tiene un valor, la consulta funciona como se esperaba, pero si no se envía ninguna variable, la consulta completa no arroja ningún resultado.

¿Cómo puedo lograr que una variable vacía no destruya toda la consulta y solo se ignore esta parte determinada de la cláusula "dónde"? Además, la declaración preparada debería seguir funcionando.

Traté de verificar si la variable está configurada con !empty pero no cambia este comportamiento.

 $conn = new mysqli("localhost", "xxxx", "xxxx", "xxxx"); $conn->set_charset("utf8"); // Variables to bind $classid = "4"; if(!empty($_POST["is_searchfield"])) { $searchfield = $_POST["is_searchfield"]; } else { $searchfield= ""; } $fileid = "10"; $sqlitemsparse = "SELECT * FROM itemSparse INNER JOIN item ON item.id = itemSparse.id"; $sqlitemsparse .= " WHERE item.ClassID = ?"; $sqlitemsparse .= " AND itemSparse.Display_lang = ?"; $sqlitemsparse .= " AND itemSparse.fileid = ?"; $sqlitemsparse2 = " LIMIT 0, 10"; $stmt = $conn->prepare($sqlitemsparse . $sqlitemsparse2); $stmt->bind_param('sss', $classid, $searchfield, $fileid); $stmt->execute(); $resultitemsparse = $stmt->get_result(); $rowsitemsparse = $resultitemsparse->fetch_all(MYSQLI_ASSOC);
over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

La idea es cambiar la consulta para que coincida con los datos proporcionados.

 $conn = new mysqli("localhost", "xxxx", "xxxx", "xxxx"); $conn->set_charset("utf8"); // Variables to bind $classid = "4"; $fileid = "10"; if(!empty($_POST["is_searchfield"])) { $sqlitemsparse = "SELECT * FROM itemSparse INNER JOIN item ON item.id = itemSparse.id WHERE item.ClassID = ? AND itemSparse.Display_lang = ? AND itemSparse.fileid = ? LIMIT 0, 10"; $stmt = $conn->prepare($sqlitemsparse); $stmt->bind_param('sss', $classid, $_POST["is_searchfield"], $fileid); } else { $sqlitemsparse = "SELECT * FROM itemSparse INNER JOIN item ON item.id = itemSparse.id WHERE item.ClassID = ? AND itemSparse.fileid = ? LIMIT 0, 10"; $stmt = $conn->prepare($sqlitemsparse); $stmt->bind_param('ss', $classid, $fileid); } $stmt->execute(); $resultitemsparse = $stmt->get_result(); $rowsitemsparse = $resultitemsparse->fetch_all(MYSQLI_ASSOC);
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