Ver Mensaje Individual
  #3 (permalink)  
Antiguo 28/10/2013, 16:11
Avatar de guardarmicorreo
guardarmicorreo
 
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 6 meses
Puntos: 84
Respuesta: Dudas sobre Mysql y Mysqli con otras funciones

Cita:
Iniciado por cell001 Ver Mensaje
Hola Buenas tardes a todos.

Tengo una duda muy simple creo.

Actualmente uso para consultas a BD Mysql sin embargo quiero empezar a utilizar Mysqli, y tengo unas pequeñas dudas

Estuve leyendo un poco y viendo ejemplos sobre mysqli donde veía diferencias en acomodos como este:

en Mysql:
$query = mysql_query("SELECT * FROM tb_banner",$conexion);

en Mysqli
$query = mysqli_query($conexion,"SELECT * FROM tb_banner");

y otros.

Lo que tengo duda es ¿qué clase de cosas debo tener en cuenta antes de empezar a utilizar Mysqli y si estos reaccionan igual ante otras funciones externas a las mysql como "echo", "while", "unlink", etc etc.?

¿Si utilizo mysqli en la conexión todo lo que use su variable debe ser también con mysql, cierto?

Saludos
hace varios meses tuve el mismo problema. resulta que no me enseñaron nada de cómo se conecta php a una bd, nada de sql y para colmo todo me lo dieron hecho:

tuve que investigar por mi cuenta. paso a contarte las principales diferencias que pude ver entre mysql y mysqli

antes para conectar php a una bd con la extensión mysql:

Código PHP:
Ver original
  1. $servidor = "localhost";
  2.      $usuario = "mi usuario";
  3.      $password = "mi password";
  4.      $bd = 'mi bd';
  5.      $TextoSQL = "SELECT * FROM miTabla";
  6.      $IDConexion = mysql_connect($servidor, $usuario, $password);
  7.    
  8.      mysql_select_db($bd, $IDConexion);
  9.    
  10.         $IDConsulta = mysql_query($TextoSQL);
  11.    
  12.      if ($IDConsulta == false)
  13.         {
  14.         echo "ERROR: <br>\n";
  15.         echo mysql_error($IDConexion);
  16.         }
  17.  
  18.      while ($result= mysql_fetch_array($IDConsulta))
  19.     {
  20.         echo $result['nombre_del_campo_en_la_tabla']."<br>";
  21.     }

ahora una clase con mysqli, que es la extensión que utilizo, tengo intención de aprender pdo un poco más adelante :D

Código PHP:
Ver original
  1. /*
  2. CLASE PARA CONECTAR Y REALIZAR OPERACIONES EN LA BASE DE DATOS
  3. */
  4. class Conectar
  5. {
  6.     private $IDConexion;
  7.     private $Escapado;
  8.     private $IDConsulta;
  9.    
  10.     public function __construct()
  11.     {
  12.         //establezco los datos de autenticación para acceder a la base de datos
  13.         $conexion = mysqli_connect("localhost", "mi_usuario" , "mi_password" , "la_BD");
  14.         //establezco el conjunto de caracteres a nivel de servidor en tiempo de ejecucion
  15.         mysqli_set_charset( $conexion, "utf8" );
  16.        
  17.         $this->IDConexion = $conexion;
  18.        
  19.         return $this->IDConexion;
  20.     }
  21.    
  22.     public function escapar( $string_escapar )
  23.     {
  24.         //escapo caracteres para evitar sql injection
  25.         $escape = mysqli_real_escape_string( $this->IDConexion, $string_escapar );
  26.        
  27.         $this->Escapado = $escape;
  28.        
  29.         return $this->Escapado;
  30.     }
  31.    
  32.     public function conectar ( $string_consulta )
  33.     {
  34.         //conecto a la base de datos
  35.         $this->IDConsulta = mysqli_query($this->IDConexion , $string_consulta)
  36.         OR die (mysqli_error($this->IDConexion));
  37.        
  38.         return $this->IDConsulta;
  39.     }
  40.  
  41.         //cierra la conexión
  42.     public function go_out ()
  43.     {
  44.         mysqli_close($this->IDConexion);
  45.     }
  46. }

las diferencias son que en vez de mysql_.... , debes escribir mysqli_seguido de lo que quieres realizar (query, escape, etc.).

otra diferencia es que mysql_select_db() antes era necesario, ahora aunque tenemos disponible mysqli_select_db() ya no lo necesitamos porque podemos especificar la bd en el propio connect.

otra diferencia es que mysqli_query ya no recibe un parámetro solamente como su homólogo mysql_query, sino que recibe dos parámetros, a saber:

parámetro 1 es un objeto creado por mysqli_connect y el parámetro 2 es la propia consulta SQL.

lo mismo pasa con mysqli_real_escape_string, antes su homólogo mysql_real_escape_string podía recibir solamente el string a escapar si habíamos abierto previamente una consulta. ahora la documentación no dice nada al respecto, por lo tanto ambos parámetros son necesarios en la extensión mysqli.

si quieres más información lee detenidamente la documentación oficial de php.

espero haberte ayudado :)

saludos.
__________________
Ayúdame a hacerlo por mi mismo.