Introdução

A partir do MySQL 4.1 e do PHP 5.5, a extensão mysql_* tornou-se obsoleta dando espaço a um novo pacote de extensões conhecido como MySQLi (MySQL Improved). Com a promessa de chegada do PHP 7 no final de 2015 e meados de 2016, a extensão mysql_* não poderá mais ser utilizada, logo os programadores devem estar preparados para a nova extensão MySQLi.

Vantagens da nova extensão

A área de TI está em constante modificação. Novas tecnologias são criadas a todo momento e, linguagens, extensões e ferramentas que eram utilizados a duas décadas atrás podem estar obsoletas para os padrões de tecnologia atuais. Essa é a situação da extensão mysql_*. Novas tecnologias foram desenvolvidas e com o passar do tempo essa extensão já não era mais compatível, devido a isso houve a migração para a extensão MySQLi.

A primeira vantagem da nova extensão em relação à antiga, com certeza, é a segurança. A chance de invasão e de Sql Injection na nova extensão são bem menores que na antiga. Outra vantagem que podemos citar é a mais rápida interação entre o código e o banco de dados. Uma terceira vantagem do MySQLi em relação ao mysql_* é o uso dos comandos pré-preparados (prepared statements) que fazem com que a query seja analisada, preparada e otimizada para a execução, fazendo com que uma query possa ser usada diversas vezes sem precisar ficar repetindo toda hora o mesmo código. Além disso, com o prepared statements não inserimos aspas no comando sql, o que ajuda a reduzir a possibilidade de Sql Injection.

Mudanças

3.1 Verificando se o MySQLi está habilitado no PHP

Verifique através do phpinfo(); se o MySQLi está habilitado no seu servidor. Caso não esteja, vá até o arquivo PHP.ini e retire o ponto e vírgula do início da extension=php_mysqli.dll . Após isso, seu servidor já estará apto a utilizar o MySQLi.

3.2 Conexão ao banco de dados

Antigamente utilizávamos o mysql_connect para conectar ao banco de dados. A nova forma é assim:

<?php

$servidor=’localhost’;

$usuario=’root’;

$senha=”;

$bancodedados=’db_mysqli’;

$mysqli = new mysqli($servidor,$usuario,$senha,$bancodedados);

if (mysqli_connect_errno()) {

die(‘Não foi possível conectar-se ao banco de dados: ‘ . mysqli_connect_error());

exit();

}

?>

3.3 Inserindo dados no banco de dados

Para inserirmos dados no banco, faz-se da seguinte maneira:

<?php

include (‘conecta.php’);

$id=0;

$nome=$_POST[‘nome’];

$email = $_POST[‘email’];

$telefone=$_POST[‘telefone’];

$sql=$mysqli->prepare(“insert into teste values (?,?,?,?)”);

$sql->bind_param(“issi”,$id, $nome,$email,$telefone);

$sql->execute();

if ($sql)

{

echo “<script>

alert (‘Dados inseridos’);

window.location.href=’index.php’;

</script>”;

}

else

{

echo “<script>

alert (‘Ouve um erro’);

window.location.href=’index.php’;

</script>”;

}

$sql->close();

$mysqli->close();

?>

3.4 Pesquisa com prepared statements

No exemplo abaixo serão pesquisados os resultados que possuírem id maior ou igual a 1. Utilizaremos bind_param do tipo integer (i), mandaremos os resultados para as variáveis usando bind_result e exibiremos no while com o fetch().

$sql=$mysqli->prepare(“select id, nome, email,telefone from teste where id >= ?”);

$id2=’1′;

$sql->bind_param(‘i’,$id2);

$sql->execute();

$sql->bind_result($id,$nome,$email,$telefone);

while ($sql->fetch())

{

echo $id.$nome.$email.$telefone.'<br>’;

}

$sql->close();

$mysqli->close();

3.5 Contando linhas de resultados

No exemplo abaixo serão contadas as linhas que possuírem id maior ou igual a 1. Utilizaremos affected_rows para nos repassar esse valor.

$sql=$mysqli->prepare(“select id, nome, email,telefone from teste where id >= ?”);

$id2=’1′;

$sql->bind_param(‘i’,$id2);

$sql->execute();

$sql->store_result();

$row=$sql->affected_rows;

echo $row.'<br>’;

3.6 Fazendo o update de dados

Segue o mesmo padrão explicado acima.

$sql=$mysqli->prepare(“update teste set nome = ?, email = ?, telefone = ? where id = ?”);

$sql->bind_param(“ssii”,$nome,$email,$telefone,$id);

$sql->execute();

Conclusão

Chegamos à conclusão de que toda mudança, a princípio, é chata, pois exige estudo por parte do programador. Por outro lado, há que se reconhecer que a nova extensão MySQLi oferece muitas vantagens em relação à sua antecessora, principalmente no quesito segurança que é o mais importante no desenvolvimento de um website interligado ao banco de dados. Portanto, cabe ao programador se atualizar e buscar sempre novas tecnologias que forneçam maior estabilidade e segurança aos sistemas.