PHP MySQLFunções: mysqli_query e mysqli_connect

⚡ Resumo Inteligente

MySQLO mysqli, o PHP e outros métodos de acesso a banco de dados permitem que um script PHP se conecte a um banco de dados, execute consultas e leia resultados. Este guia aborda as funções principais do mysqli, exemplos completos de operações CRUD, instruções preparadas para segurança e os métodos alternativos de acesso PDO e ODBC.

  • ???? Conectando: mysqli_connect abre um link para o MySQL servidor, e mysqli_select_db escolhe o banco de dados com o qual trabalhar.
  • 🗃️ Consultas em execução: A função mysqli_query executa instruções INSERT, SELECT, UPDATE e DELETE no banco de dados selecionado.
  • 📄 Resultados da leitura: `mysqli_num_rows` conta as linhas retornadas e `mysqli_fetch_array` lê cada linha e a armazena em um array para saída.
  • 🔄 CRU Operações: Em conjunto, essas funções criam, leem, atualizam e excluem registros, as quatro operações principais de um banco de dados.
  • 🛡️ Declarações Preparadas: A vinculação de valores com instruções preparadas impede a injeção de SQL, ao contrário da construção de consultas por concatenação de entradas do usuário.
  • 🧩 PDO e ODBC: O PDO oferece uma interface única para diversos mecanismos de banco de dados, enquanto o ODBC se conecta a fontes como... Microsoft Acesso.
  • 🤖 Assistência de IA: Ferramentas de IA podem converter código mysqli legado em PDO com instruções preparadas e depurar erros de conexão.

PHP MySQL Acesso ao Banco de Dados

O PHP possui uma rica coleção de funções integradas para manipular dados. MySQL bases de dados.

Função PHP mysqli_connect

A função PHP mysqli_connect é usada para conectar-se a um servidor. MySQL servidor de banco de dados.

Possui a seguinte sintaxe.

<?php
$db_handle = mysqli_connect($db_server_name, $db_user_name, $db_password);
?>

AQUI,

  • “$db_handle” é a variável de recurso de conexão com o banco de dados.
  • “mysqli_connect(…)” é a função para conexão com o banco de dados PHP.
  • “$db_server_name” é o nome ou endereço IP do servidor que hospeda o MySQL servidor.
  • “$db_user_name” é um nome de usuário válido no MySQL servidor.
  • “$db_password” é uma senha válida associada a um nome de usuário no MySQL servidor.

Função PHP mysqli_select_db

A função mysqli_select_db é usada para selecionar um banco de dados.

Possui a seguinte sintaxe.

<?php
mysqli_select_db($db_handle, $database_name);
?>

AQUI,

  • “mysqli_select_db(…)” é a função de seleção de banco de dados que retorna verdadeiro ou falso
  • “$db_handle” é o link de conexão do servidor.
  • “$database_name” é o nome do banco de dados

Função PHP mysqli_query

A função mysqli_query é usada para executar SQL consultas.

A função pode ser usada para executar os seguintes tipos de consulta:

  • inserção
  • Selecionar
  • Atualizar
  • Apagar

Possui a seguinte sintaxe.

<?php
mysqli_query($db_handle, $query);
?>

AQUI,

  • “mysqli_query(…)” é a função que executa as consultas SQL.
  • “$db_handle” é o link de conexão do servidor.
  • “$query” é a consulta SQL a ser executada

Função PHP mysqli_num_rows

A função mysqli_num_rows é usada para obter o número de linhas retornadas de uma consulta selecionada.

Possui a seguinte sintaxe.

<?php
mysqli_num_rows($result);
?>

AQUI,

  • “mysqli_num_rows(…)” é a função de contagem de linhas
  • “$resultado” é o conjunto de resultados mysqli_query

Função PHP mysqli_fetch_array

A função mysqli_fetch_array é usada para buscar matrizes de linhas de um conjunto de resultados de consulta.

Possui a seguinte sintaxe.

<?php
mysqli_fetch_array($result);
?>

AQUI,

  • “mysqli_fetch_array(…)” é a função para buscar arrays de linhas
  • “$resultado” é o resultado retornado pela função mysqli_query.

Função PHP mysqli_close

A função mysqli_close é usada para fechar uma conexão aberta com o banco de dados.

Possui a seguinte sintaxe.

<?php
mysqli_close($db_handle);
?>

AQUI,

  • “mysqli_close(…)” é a função PHP que fecha a conexão.
  • “$db_handle” é o recurso de conexão com o servidor.

PHP MySQL Exemplos de CRUD

Vejamos exemplos práticos que aproveitam essas funções. Este tutorial pressupõe conhecimento de MySQL e SQL; se esses termos lhe forem desconhecidos, consulte nosso MySQL e tutoriais SQL.

Criaremos um banco de dados simples chamado my_personal_contacts com apenas uma tabela. Conecte-se a MySQL usando sua ferramenta de acesso favorita, como MySQL No Workbench ou phpMyAdmin, crie um banco de dados chamado my_personal_contacts e execute o script abaixo para criar a tabela e inserir alguns dados fictícios.

CREATE TABLE IF NOT EXISTS `my_contacts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`full_names` varchar(255) NOT NULL,
`gender` varchar(6) NOT NULL,
`contact_no` varchar(75) NOT NULL,
`email` varchar(255) NOT NULL,
`city` varchar(255) NOT NULL,
`country` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

INSERT INTO `my_contacts` (`id`, `full_names`, `gender`, `contact_no`, `email`, `city`, `country`) VALUES
(1, 'Zeus', 'Male', '111', 'zeus@olympus.mt.co', 'Agos', 'Greece'),
(2, 'Anthena', 'Female', '123', 'anthena@olympus.mt.co', 'Athens', 'Greece'),
(3, 'Jupiter', 'Male', '783', 'jupiter@planet.pt.co', 'Rome', 'Italy'),
(4, 'Venus', 'Female', '987', 'venus@planet.pt.co', 'Mars', 'Italy');

Lendo registros do banco de dados

Agora vamos criar um programa que imprima os registros do banco de dados.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "SELECT * FROM my_contacts"; // SQL select query
$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement

if (!$result)
    die("Database access failed: " . mysqli_error($dbh));

$rows = mysqli_num_rows($result); // get number of rows returned

if ($rows) {
    while ($row = mysqli_fetch_array($result)) {
        echo 'ID: ' . $row['id'] . '<br>';
        echo 'Full Names: ' . $row['full_names'] . '<br>';
        echo 'Gender: ' . $row['gender'] . '<br>';
        echo 'Contact No: ' . $row['contact_no'] . '<br>';
        echo 'Email: ' . $row['email'] . '<br>';
        echo 'City: ' . $row['city'] . '<br>';
        echo 'Country: ' . $row['country'] . '<br><br>';
    }
}
mysqli_close($dbh); // close the database connection
?>

A execução do código acima retorna os resultados mostrados no diagrama abaixo.

PHP: MySQL Funções

Inserindo novos registros

Vejamos agora um exemplo que adiciona um novo registro à nossa tabela. O código abaixo mostra a implementação.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "INSERT INTO `my_contacts` (`full_names`,`gender`,`contact_no`,`email`,`city`,`country`)";
$sql_stmt .= " VALUES(7,8,9,10,11,12)";

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Adding record failed: " . mysqli_error($dbh));

echo "Poseidon has been successfully added to your contacts list";
mysqli_close($dbh); // close the database connection
?>

Ao executar o código acima, a saída será "Poseidon foi adicionado com sucesso à sua lista de contatos". Volte ao exemplo de consulta SELECT e recupere seus contatos novamente para verificar se Poseidon foi adicionado à sua lista.

Atualizando registros

Vejamos agora um exemplo de atualização de um registro no banco de dados. Suponhamos que Poseidon tenha alterado seu número de telefone e endereço de e-mail.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$sql_stmt = "UPDATE `my_contacts` SET `contact_no` = 8, `email` = 9";
$sql_stmt .= " WHERE `id` = 5"; // SQL update query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Updating record failed: " . mysqli_error($dbh));

echo "ID number 5 has been successfully updated";
mysqli_close($dbh); // close the database connection
?>

Excluindo registros

Vejamos agora um exemplo que remove registros do banco de dados. Suponhamos que Vênus tenha uma ordem de restrição contra nós e que precisemos remover suas informações de contato do nosso banco de dados. banco de dados.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody'); // connect to MySQL server
if (!$dbh)
    die("Unable to connect to MySQL: " . mysqli_connect_error());

if (!mysqli_select_db($dbh, 'my_personal_contacts'))
    die("Unable to select database: " . mysqli_error($dbh));

$id = 4; // Venus's ID in the database
$sql_stmt = "DELETE FROM `my_contacts` WHERE `id` = $id"; // SQL delete query

$result = mysqli_query($dbh, $sql_stmt); // execute SQL statement
if (!$result)
    die("Deleting record failed: " . mysqli_error($dbh));

echo "ID number $id has been successfully deleted";
mysqli_close($dbh); // close the database connection
?>

Prevenindo Injeção de SQL com Instruções Preparadas

Os exemplos de CRUD acima constroem consultas concatenando strings. Quando qualquer parte de uma consulta vem da entrada do usuário, isso abre caminho para injeção de SQL. As instruções preparadas resolvem esse problema enviando a consulta e os dados separadamente, de modo que a entrada nunca possa alterar a estrutura da consulta.

<?php
$dbh = mysqli_connect('localhost', 'root', 'melody');
$stmt = mysqli_prepare($dbh, "INSERT INTO my_contacts (full_names, email) VALUES (?, ?)");
mysqli_stmt_bind_param($stmt, "ss", $name, $email);
$name = 'Poseidon';
$email = 'poseidon@sea.oc';
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
mysqli_close($dbh);
?>

Aqui, os pontos de interrogação são marcadores de posição, e o `bind_param` vincula com segurança os valores de nome e e-mail. O banco de dados os trata estritamente como dados, e é por isso que as instruções preparadas, disponíveis tanto no `mysqli` quanto no `PDO`, são a maneira recomendada de executar qualquer consulta que utilize entrada do usuário.

Objeto de Acesso a Dados PHP (PDO)

PDO é uma classe que nos permite manipular diferentes mecanismos de banco de dados, como... MySQL, PostgreSQLe o MS SQL Server usando a mesma interface.

O código abaixo mostra o método de acesso ao banco de dados utilizando o objeto PDO.

Observação: o código abaixo pressupõe conhecimento da linguagem SQL, arrays, tratamento de exceções e do loop foreach.

<?php
try {
$pdo = new PDO("mysql:host=localhost;dbname=my_personal_contacts", 'root', 'melody');

$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$pdo->exec('SET NAMES "utf8"');

$sql_stmt = "SELECT * FROM `my_contacts`";
$result = $pdo->query($sql_stmt);
$result->setFetchMode(PDO::FETCH_ASSOC);
$data = array();
foreach ($result as $row) {
$data[] = $row;
}
print_r($data);
}
catch (PDOException $e) {
echo $e->getMessage();
}
?>

AQUI,

  • “try{…}catch{…}” é o bloco de tratamento de exceções.
  • “$pdo = new PDO(“mysql…” cria uma instância do objeto PDO e passa o driver do banco de dados, os nomes do servidor e do banco de dados, o ID do usuário e a senha.
  • “$pdo->setAttribute…” define o modo de erro do PDO para lançar exceções.
  • “$pdo->exec('SET NAMES…') define o formato de codificação

Acesso a dados ODBC em PHP

ODBC é a sigla para Open Database Connectivity (Conectividade Aberta de Banco de Dados). Sua sintaxe básica é a seguinte:

<?php
$conn = odbc_connect($dsn, $user_name, $password);
?>

AQUI,

  • “odbc_connect” é uma função integrada do PHP.
  • “$dsn” é o nome da fonte de dados ODBC.
  • O parâmetro “$user_name” é opcional e é usado para o nome de usuário ODBC.
  • O parâmetro “$password” é opcional e é usado como senha ODBC.

O exemplo abaixo pressupõe que você esteja usando Windows e criei um link ODBC para o northwind Microsoft Acesse o banco de dados chamado northwind.

<?php
$dbh = odbc_connect('northwind', '', '');
if (!$dbh) {
exit("Connection Failed: " . $dbh);
}
$sql_stmt = "SELECT * FROM customers";
$result = odbc_exec($dbh, $sql_stmt);
if (!$result) {
exit("Error accessing records");
}
while (odbc_fetch_row($result)) {
$company_name = odbc_result($result, "CompanyName");
$contact_name = odbc_result($result, "ContactName");
echo "<b>Company Name (Contact Person):</b> $company_name ($contact_name) <br>";
}
odbc_close($dbh);
?>

Perguntas Frequentes

mysqli funciona apenas com MySQL O PDO oferece estilos procedurais e orientados a objetos. Ele funciona com diversos bancos de dados por meio de uma única interface e suporta marcadores nomeados. Ambos suportam instruções preparadas; o PDO é mais portátil entre diferentes mecanismos de banco de dados.

Não. A extensão original mysql_* foi removida no PHP 7. Use mysqli ou PDO em vez disso. Ambas recebem manutenção ativa, suportam instruções preparadas e protegem contra os riscos de injeção da extensão antiga.

Capture o erro e mostre ao usuário uma mensagem genérica, registrando os detalhes de forma privada. Não exiba a saída de `mysqli_error` para visitantes, pois isso pode revelar nomes e estruturas de tabelas úteis para um atacante.

Sim. Cole o script mysqli e a IA poderá reescrevê-lo usando PDO, substituir consultas concatenadas por parâmetros vinculados e adicionar tratamento de erros com try-catch. RevVeja os espaços reservados e teste cada consulta em seguida.

Sim. Compartilhe o erro e seu código de conexão, e a IA poderá identificar credenciais incorretas, um host ou porta inválidos, um banco de dados ausente ou um driver desativado, sugerindo então as configurações corretas para você tentar.

Resuma esta postagem com: