Foros del Web » Programando para Internet » PHP »

Dudas sobre Mysql y Mysqli con otras funciones

Estas en el tema de Dudas sobre Mysql y Mysqli con otras funciones en el foro de PHP en Foros del Web. 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, ...
  #1 (permalink)  
Antiguo 28/10/2013, 14:45
Avatar de cell001  
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 5
Dudas sobre Mysql y Mysqli con otras funciones

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
  #2 (permalink)  
Antiguo 28/10/2013, 15:29
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Dudas sobre Mysql y Mysqli con otras funciones

la respuesta a ambas preguntas es sí. además de la clase mysqli también tienes pdo. para empezar a usarlas, en principio, sólo has de decomentar las extensiones en php.ini
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #3 (permalink)  
Antiguo 28/10/2013, 16:11
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 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.
  #4 (permalink)  
Antiguo 28/10/2013, 19:14
Avatar de cell001  
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 5
Respuesta: Dudas sobre Mysql y Mysqli con otras funciones

la verdad guardarmicorreo me haz dejado mas confuso con esa clase jajaja

No uso clases aun, a lo mucho solo funciones y demás.

¿En tu ejemplo, las funciones __construct , escapar, conectar y log_out como se ejecutarían al hacer una consulta?

¿ seria algo como $consulta=mysqli_query(__construct, "CONSULTA X"); ?
  #5 (permalink)  
Antiguo 29/10/2013, 04:53
Avatar de guardarmicorreo  
Fecha de Ingreso: noviembre-2012
Ubicación: Córdoba
Mensajes: 1.153
Antigüedad: 11 años, 5 meses
Puntos: 84
Respuesta: Dudas sobre Mysql y Mysqli con otras funciones

Cita:
Iniciado por cell001 Ver Mensaje
la verdad guardarmicorreo me haz dejado mas confuso con esa clase jajaja

No uso clases aun, a lo mucho solo funciones y demás.

¿En tu ejemplo, las funciones __construct , escapar, conectar y log_out como se ejecutarían al hacer una consulta?

¿ seria algo como $consulta=mysqli_query(__construct, "CONSULTA X"); ?
fue mi error, di por sentado que trabajabas con clases.

en realidad, esa clase tiene los métodos ordenados, por lo que solo tendrías que extraer el contenido de cada __construct() y los otros métodos y te funcionaría igualmente en código por procedimientos. por lo que quedaría así:

Código PHP:
Ver original
  1. //establezco los datos de autenticación para acceder a la base de datos
  2.         $conexion = mysqli_connect("localhost", "mi_usuario" , "mi_password" , "la_BD");
  3.         //establezco el conjunto de caracteres a nivel de servidor en tiempo de ejecucion
  4.         mysqli_set_charset( $conexion, "utf8" );
  5.        
  6. //escapo caracteres para evitar sql injection
  7.         $escape = mysqli_real_escape_string( $conexion, $string_escapar );
  8.        
  9. $sql = "SELECT name FROM miTabla WHERE name = ".$escape."";
  10.  
  11. //conecto a la base de datos
  12.         $this->IDConsulta = mysqli_query($conexion , $sql)
  13.         OR die (mysqli_error($conexion));
  14.  
  15. /* las operaciones para manipular los datos extraidos de la BD*/
  16.  
  17. mysqli_close($conexion);

para trabajar con clases debes saber cosas básicas como que primero hay que instanciarlas

Código PHP:
Ver original
  1. $getname = new Conectar();

__construct es un método (función) especial que sirve para inicializar las propiedades (variables) dentro de una clase.

las propiedades dentro de una clase tienen accesibilidad:

private, protected y public.

una vez instanciada la clase se puede proceder a instanciar un método

Código PHP:
Ver original
  1. $individuo = "rodrigo";
  2.  
  3. $escape = $getname->escapar($individuo);
  4.  
  5. $sql = "SELECT name FROM miTabla WHERE name ='".$escape."'";
  6.  
  7. $resultget = $getname->conectar($sql);
  8.  
  9. /*las operaciones para manipular los datos extraidos de la BD*/
  10.  
  11. //cierro la conexion
  12. $getname->go_out;

faltaría explicar la colaboración, herencia, sobreescritura, polimorfismo,...

busca en internet, hay muchos ejemplos sobre clases de php.

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

Etiquetas: dudas, funciones, mysql, mysqli, select, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:08.