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.

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.
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); ?>

