"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Por que `mysqli_query()` retorna "Aviso: mysqli_query() espera que o parâmetro 1 seja MySQLi, dado nulo"?

Por que `mysqli_query()` retorna "Aviso: mysqli_query() espera que o parâmetro 1 seja MySQLi, dado nulo"?

Publicado em 2024-12-22
Navegar:647

Why Does `mysqli_query()` Return

Entendendo "Aviso: mysqli_query() espera que o parâmetro 1 seja MySQLi, nulo fornecido em" Erro

Em sua tentativa de criar um arquivo personalizado CMS, você encontrou a seguinte mensagem de erro:

"Aviso: mysqli_query() espera que o parâmetro 1 seja MySQLi, dado nulo in"

Causa do erro

Este erro indica que a função mysqli_query(), que executa consultas SQL, espera um objeto MySQLi como seu primeiro parâmetro. No entanto, em sua função getPosts(), você está passando um valor nulo em vez de um objeto MySQLi.

Solução

A solução para esse problema é garantir que o O objeto $con MySQLi está dentro do escopo da função getPosts(). No seu código, $con é definido no escopo global, mas não é acessível dentro da função.

Passando o objeto MySQLi como uma dependência

Uma maneira de endereço isso é para passar o objeto MySQLi para a função getPosts() como uma dependência. Veja como você pode fazer isso:

function getPosts(mysqli $con) {
    // etc
}

Ao tornar o objeto MySQLi um parâmetro da função, você garante que ele esteja disponível dentro do escopo da função e possa ser usado por mysqli_query().

Recomendações adicionais

Além de resolver o problema de definição do escopo, considere implementar as seguintes recomendações:

  • Tratar erros e conexão falhas usando mysqli_report() para definir opções de relatório de erros.
  • Pare a execução do script se ocorrer um erro de conexão ou de consulta usando mysqli::error().

Aqui está um exemplo de como implementar estas recomendações:

mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); // throw exceptions
$con=mysqli_connect("localhost","xxxx","xxxx","xxxxx");

if (!$con) {
    throw new Exception("Failed to connect to MySQL: " . mysqli_connect_error());
}

getPosts($con);

Ao implementar essas recomendações, você pode garantir a robustez e a confiabilidade do seu CMS personalizado.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3