Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcos Knijnik

Diferências e benefícios entre mysql e mysqli

Recommended Posts

Já faz um tempo que ouvi falar dessa função chamada MySQLi. Sempre utilizei a simples funções MySQL, mesmo meu servidor MySQL sendo da versão 5.1.x, e como não achei nenhuma diferência significativa, continuei utilizando a função MySQLi.

 

A única coisa que eu percebi que era diferente, na verdade, ouvi falar que era diferente, era que com MySQLi o problema de SQL Injection não existiria. Bem, então realizei o seguinte teste:

 

<?php
// recebo algum variável sem a tratar.
$usuário = $_GET['nome']; 

// conecta e seleciona a database
$link = mysqli_connect("localhost", "root", "----", "----") or die (mysqli_connect_error());

// vamos tentar achar algum nome correspondente em minha tabela de testes
$query = "SELECT * FROM tests WHERE usuário='$usuário'";
$result = mysqli_query($link, $query) or die (mysqli_error($link));

// caso tenha retornado algo, vamos exibir uma mensagem
if(mysqli_num_rows($result) > 0){
   echo 'Encontrado';
}else{
   echo 'Não-Encontrado';
}
?>

 

Um código muito simples: se a saída é http://localhost/teste.php?nome=whatever'>http://localhost/teste.php?nome=whatever, ele não encontra (pois não existe whatever em meu banco de dados). Porém, se eu por http://localhost/teste.php?nome=whatever'>http://localhost/teste.php?nome=whatever' or 1='1 ele diz ter encontrado algo, ou seja, MySQLi não impede SQL Injection!

 

Então, quais as diferências? Agradeço à quem poder me ajudar.

 

Att.

Marcos Knijnik

Compartilhar este post


Link para o post
Compartilhar em outros sites

impede sim coloca isso no codigo

$usuário = str_replace("'","",$_GET['nome']);

e ve se vai

Compartilhar este post


Link para o post
Compartilhar em outros sites

CrY, para fazer isso eu poderia simplesmente usar um addslashes, mas o que eu estou querendo saber é a DIFERÊNCIA entre mysql e mysqli, pois em ambos eu teria que, por exemplo, impedir SQL Injection...

 

Se há uma diferência REAL, qual é?

Compartilhar este post


Link para o post
Compartilhar em outros sites

As funções MySQLi funcionam apenas com PHP 5+ e MySQL 4.1.3+. E o MySQLi por si só não impede SQL Injection..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Matheus, eu já havia lido essa página e de nada de mais achei... Você pode usar com objetos, ok, mas isso não me interessa e não ajuda em nada... sobre esses prepared statments não achei nada e praticamente é isso que diz de diferencias...

 

Gugon, eu tenho MySQL 4.1.3+, mas o que quero saber é quais são as diferencias entre MySQL e MySQLi

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mysqli (MySQL Improved) possui uma interface orientada a objeto, suporta mais tipos de transação, um melhor suporte a debugging.

 

 

Porem, o mysql é ligeiramente mais rapido (perceptivel em testes de benchmarks).

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.