Autor Tema: [TUT!] Manual mysqli  (Leído 10392 veces)

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #15 en: 19 de Agosto de 2010, 06:14:52 am »
Es que no puedes comparar mysqli con mysql, primero mysqli tiene mucha más seguridad, segundo muchas más funciones que mysql tambien puedes hacer tu propias funciones en base a las otras.

Focux todo es comparable en esta vida...
MySQLi más seguridad? no tiene por qué exactamente, la seguridad se basa en la programación y configuración de cada desarrollo... eso es lo que suele diferenciar a un buen programador de uno malo (aparte esta estructuración, optimización de codigo, etcétera.)

Muchas más funciones que MySQL... no soy consciente de la cantidad , y tampoco del nombre, de esas funciones que no hay en MySQL... porque en el fondo es lenguaje SQL con el que obtenemos cada información según la orden que le inyectemos a la consulta.

Y para acabar lo que has dicho por último no tiene nada que ver con el tema debido a que todas las funciones complementan a otras y así sucesivamente, porque cuando nos vamos a crear nuestras propias funciones usamos diferentes funciones unidas para obtener el resultado que queremos, por lo tanto, tanto con MySQL y MySQLi podríamos hacer funciones en base a otras (en eso se basa la programación, en tener un mínimo y apartir de ese mínimo construir un máximo).

Un abrazo.
Sin Firma me haces una? :P

Comunidad PHPeros

Re:[TUT!] Manual mysqli
« Respuesta #15 en: 19 de Agosto de 2010, 06:14:52 am »

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #16 en: 19 de Agosto de 2010, 16:07:58 pm »
Lo primero, la seguridad no siempre tiene que ver con el programador para comprobarlo busca hacerca del Prepared statements de mysqli.

Con respecto a lo segundo, como dices, en el fondo es sql pero hay librerias que no lo aprovechan al maximo, como dicen por ahi, que no saben sacarle todo el jugo.

Por ultimo, lo de hacer tus propias funciones si tiene que ver, esa es una ventaja que nos trae no sólo mysqli sino POO en general, leete un poco sobre heredar de poo.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #17 en: 19 de Agosto de 2010, 20:39:56 pm »
Lo primero, la seguridad no siempre tiene que ver con el programador para comprobarlo busca hacerca del Prepared statements de mysqli.

Con respecto a lo segundo, como dices, en el fondo es sql pero hay librerias que no lo aprovechan al maximo, como dicen por ahi, que no saben sacarle todo el jugo.

Por ultimo, lo de hacer tus propias funciones si tiene que ver, esa es una ventaja que nos trae no sólo mysqli sino POO en general, leete un poco sobre heredar de poo.

Acabo de leer acerca de "Prepared statements" y tan solo dicen que es más seguro frente a SQL Injection, si tu lo programas bien, no te podrían hacer SQLi, por lo que claramente, no me parece un buen motivo.

¿Qué es lo que se puede hacer frente a una DDBB MySQL?
-------------------
Crear db (CREATE)
Crear tabla (CREATE)
Eliminar db (DROP)
Eliminar tabla (DROP)
Alterar la tabla (ALTER)
Limpiarla (TRUNCATE)
Insertar fila (INSERT)
Eliminar fila (DELETE)
Actualizar/Editar fila (SET)
...

Eso en base a SQL.

Funciones de la libreria MySQL:
          o mysql_affected_rows — Obtiene el número de filas afectadas en la anterior operación de MySQL
          o mysql_client_encoding — Devuelve el nombre de la colección de caracteres
          o mysql_close — Cierra la conexión de MySQL
          o mysql_connect — Abre una conexión al servidor MySQL
          o mysql_create_db — Crea una base de datos MySQL
          o mysql_data_seek — Mueve el apuntador interno del resultado
          o mysql_db_name — Obtiene los datos del resultado
          o mysql_db_query — Envía una consulta MySQL
          o mysql_drop_db — Omite (elimina) una base de datos MySQL
          o mysql_errno — Devuelve un mensaje de error con un valor numérico de la operación anterior con MySQL
          o mysql_error — Devuelve el texto con error del mensaje de la anterior operación MySQL
          o mysql_escape_string — Escapes a string for use in a mysql_query
          o mysql_fetch_array — Fetch a result row as an associative array, a numeric array, or both
          o mysql_fetch_assoc — Recupera una fila de resultado como un array asociativo
          o mysql_fetch_field — Get column information from a result and return as an object
          o mysql_fetch_lengths — Get the length of each output in a result
          o mysql_fetch_object — Fetch a result row as an object
          o mysql_fetch_row — Get a result row as an enumerated array
          o mysql_field_flags — Get the flags associated with the specified field in a result
          o mysql_field_len — Returns the length of the specified field
          o mysql_field_name — Get the name of the specified field in a result
          o mysql_field_seek — Set result pointer to a specified field offset
          o mysql_field_table — Get name of the table the specified field is in
          o mysql_field_type — Get the type of the specified field in a result
          o mysql_free_result — Free result memory
          o mysql_get_client_info — Obtener información del cliente MySQL
          o mysql_get_host_info — Obtener información de la máquina anfitriona MySQL
          o mysql_get_proto_info — Obtener información del protocolo MySQL
          o mysql_get_server_info — Obtener información del servidor MySQL
          o mysql_info — Obtiene información sobre la consulta más reciente
          o mysql_insert_id — Get the ID generated in the last query
          o mysql_list_dbs — List databases available on a MySQL server
          o mysql_list_fields — List MySQL table fields
          o mysql_list_processes — Lista los procesos MySQL
          o mysql_list_tables — Lista las tablas de una base de datos MySQL
          o mysql_num_fields — Get number of fields in result
          o mysql_num_rows — Get number of rows in result
          o mysql_pconnect — Open a persistent connection to a MySQL server
          o mysql_ping — Efectuar un chequeo de respuesta (ping) sobre una conexión de servidor o reconectarse si no hay conexión
          o mysql_query — Send a MySQL query
          o mysql_real_escape_string — Escapes special characters in a string for use in an SQL statement
          o mysql_result — Get result data
          o mysql_select_db — Select a MySQL database
          o mysql_set_charset — Sets the client character set
          o mysql_stat — Obtiene el status actual del sistema
          o mysql_tablename — Get table name of field
          o mysql_thread_id — Devuelve el ID del hilo actual
          o mysql_unbuffered_query — Envía una consulta SQL a MySQL, sin recuperar ni colocar en búfer las filas de resultado
[ sacado de php.net # http://es2.php.net/manual/es/book.mysql.php ]

Aparte de poder hacer todo por el query, ya vienen funciones predefinidas en la librería para cambiar lo que quieras de la base de datos.

Funciones MySQLi
    * mysqli->affected_rows — Gets the number of affected rows in a previous MySQL operation
    * mysqli::autocommit — Turns on or off auto-commiting database modifications
    * mysqli::change_user — Changes the user of the specified database connection
    * mysqli::character_set_name — Returns the default character set for the database connection
    * mysqli->client_info — Returns the MySQL client version as a string
    * mysqli->client_version — Get MySQL client info
    * mysqli::close — Closes a previously o*****d database connection
    * mysqli::commit — Commits the current transaction
    * mysqli->connect_errno — Returns the error code from last connect call
    * mysqli->connect_error — Returns a string description of the last connect error
    * mysqli::__construct — Open a new connection to the MySQL server
    * mysqli::debug — Performs debugging operations
    * mysqli::dump_debug_info — Dump debugging information into the log
    * mysqli->errno — Returns the error code for the most recent function call
    * mysqli->error — Returns a string description of the last error
    * mysqli->field_count — Returns the number of columns for the most recent query
    * mysqli::get_charset — Returns a character set object
    * mysqli->get_client_info — Returns the MySQL client version as a string
    * mysqli->client_version — Get MySQL client info
    * mysqli::get_connection_stats — Returns statistics about the client connection
    * mysqli->host_info — Returns a string representing the type of connection used
    * mysqli->protocol_version — Returns the version of the MySQL protocol used
    * mysqli->server_info — Returns the version of the MySQL server
    * mysqli->server_version — Returns the version of the MySQL server as an integer
    * mysqli::get_warnings — Get result of SHOW WARNINGS
    * mysqli->info — Retrieves information about the most recently executed query
    * mysqli::init — Initializes MySQLi and returns a resource for use with mysqli_real_connect()
    * mysqli->insert_id — Returns the auto generated id used in the last query
    * mysqli::kill — Asks the server to kill a MySQL thread
    * mysqli::more_results — Check if there are any more query results from a multi query
    * mysqli::multi_query — Performs a query on the database
    * mysqli::next_result — Prepare next result from multi_query
    * mysqli::options — Set options
    * mysqli::ping — Pings a server connection, or tries to reconnect if the connection has gone down
    * mysqli::poll — Poll connections
    * mysqli::prepare — Prepare an SQL statement for execution
    * mysqli::query — Performs a query on the database
    * mysqli::real_connect — Opens a connection to a mysql server
    * mysqli::real_escape_string — Escapes special characters in a string for use in an SQL statement, taking into account the current charset of the connection
    * mysqli::real_query — Execute an SQL query
    * mysqli::reap_async_query — Get result from async query
    * mysqli::rollback — Rolls back current transaction
    * mysqli::select_db — Selects the default database for database queries
    * mysqli::set_charset — Sets the default client character set
    * mysqli::set_local_infile_default — Unsets user defined handler for load local infile command
    * mysqli::set_local_infile_handler — Set callback function for LOAD DATA LOCAL INFILE command
    * mysqli->sqlstate — Returns the SQLSTATE error from previous MySQL operation
    * mysqli::ssl_set — Used for establishing secure connections using SSL
    * mysqli::stat — Gets the current system status
    * mysqli::stmt_init — Initializes a statement and returns an object for use with mysqli_stmt_prepare
    * mysqli::store_result — Transfers a result set from the last query
    * mysqli->thread_id — Returns the thread ID for the current connection
    * mysqli::thread_safe — Returns whether thread safety is given or not
    * mysqli::use_result — Initiate a result set retrieval
    * mysqli->warning_count — Returns the number of warnings from the last query for the given link

[ sacado tambien de php.net # http://es2.php.net/manual/es/book.mysqli.php ]

Básicamente las mismas funciones, sí MySQLi tiene más, pero porque necesita más... porque para mostrar un error de conexión necesita mysqli->connect_errno()(numero) o mysqli->connect_error()(nombre del error).

Cosas que con 'mysql_' tan solo te haría falta mysql_error().

Para mí la simple diferencia entre una y otro esque una es una librería a funciones y la otra es una librería a clases.

Y por ultimo... claro que es la ventaja de POO pero entonces ahora hablamos de POO... no de MySQLi... porque a que con POO se puede usar también la librería mysql?
Por supuesto !
¿Entonces?
Ahí está la cosa que como ya he dicho la diferencia entre MySQL y MySQLi es el simple hecho de función o clase ?

Cuestión de gustos ! jejej

Un abrazo :)
Sin Firma me haces una? :P

Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #18 en: 19 de Agosto de 2010, 20:56:11 pm »
Mysqli nos ayuda a ser mucho más organizado, comenzando por la muestra de errores, a quien no le gustaría separar los errores de conexión de los errores de consultas, creo que a todos nos gustaría eso, a quien no le gustaría más seguridad contra las Injecciones SQL, a quien no le gustaria tener la ventaja de ejecutar varias querys separadas por punto y coma, en una conexión, a quien no le gustaría tener más rendimiento, a quien no le gustaría personalizar las funciones agregandole ajustes a nuestro gusto, son muchas cosas que nos trae mysqli, porque no sólo es POO, porque tambien para los que no programan orientado a objetos la pueden usar mediante funciones.
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado FeDe

  • PHPero Avanzado
  • ****
  • Mensajes: 448
  • Karma: 35
  • Sexo: Masculino
  • BaDyDj -> ¡Mi Stylo, Mi ViDa!
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #19 en: 19 de Agosto de 2010, 21:03:57 pm »
Buenas,

Lo de los errores... da igual tenerlos separados o al menos me da igual a mí porque cuando hay un error de conexión se bloquea toda la aplicación y si no, me muestra el error de la sentencia SQL.

Seguridad contra los ataques de SQLi, con librerias MySQL también lo puede solucionar.

Lo de las QUERYS Múltiples es el único beneficio que le veo.

Y claro que no es solo POO, sino que se basa en su funcionamiento y por supuesto que lo pueden usar la gente con programación "clásica" y no orientado a objetos !
Sin Firma me haces una? :P

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #20 en: 20 de Agosto de 2010, 00:20:34 am »
No es cuestión solo de comodidad FeDe.
Es cuestión de versiones.
MySQLi esta diseñado para bases de datos con versiones superiores o iguales a la 4.1, y MySQL solo no.

Ya lo dice la web de PHP.net, donde te recomiendan (varias veces) que uses MySQLi si tu DB es mayor a esa versión.
http://www.php.net/manual/en/mysqli.overview.php

En esa página también puedes ver las ventajas de una sobre la otra.

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado nadeu3

  • PHPer@
  • **
  • Mensajes: 73
  • Karma: 0
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #21 en: 20 de Agosto de 2010, 15:43:05 pm »
La MySQL lib se puede usar BAJO cualquier versión de PHP.. solo que necesitas los repos adecuados y los paquetes..

Si hablo, no es por hablar..
Ah y si que se como va MySQLi, he programado con ella, con las dos... Pero digo que si alguien se tiene que tirar tiempo aprendiendo como funciona MySQLi sabiendo MySQL que no lo haga, que es lo mismo casi.. En seguridad, activa el SQL Safe Mode y verás como no te pasa nada chavalin..

Que no, que no voy con chuleria.. eres tu que me chincha..

Saludos.

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #22 en: 20 de Agosto de 2010, 16:13:46 pm »
La MySQL lib se puede usar BAJO cualquier versión de PHP.. solo que necesitas los repos adecuados y los paquetes..

Si hablo, no es por hablar..
Ah y si que se como va MySQLi, he programado con ella, con las dos... Pero digo que si alguien se tiene que tirar tiempo aprendiendo como funciona MySQLi sabiendo MySQL que no lo haga, que es lo mismo casi.. En seguridad, activa el SQL Safe Mode y verás como no te pasa nada chavalin..

Que no, que no voy con chuleria.. eres tu que me chincha..

Saludos.

Te has molestado acaso en leer el link que dejó TLX?

Desconectado CarlosRdrz

  • Moderador Global
  • PHPero Master
  • *****
  • Mensajes: 2.505
  • Karma: 131
  • Sexo: Masculino
  • A.k.a. TLX
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #23 en: 21 de Agosto de 2010, 02:01:55 am »
Te has molestado acaso en leer el link que dejó TLX?

No, parece que no.

La MySQL lib se puede usar BAJO cualquier versión de PHP.. solo que necesitas los repos adecuados y los paquetes..

Si hablo, no es por hablar..
Ah y si que se como va MySQLi, he programado con ella, con las dos... Pero digo que si alguien se tiene que tirar tiempo aprendiendo como funciona MySQLi sabiendo MySQL que no lo haga, que es lo mismo casi.. En seguridad, activa el SQL Safe Mode y verás como no te pasa nada chavalin..

Que no, que no voy con chuleria.. eres tu que me chincha..

Saludos.

Dudo que a alguien que ya conoce el lenguaje SQL le cueste mucho trabajo pasar de MySQL a MySQLi para PHP, porque son exactamente iguales, simplemente cambias las funciones por métodos de clases. No es aprender un lenguaje desde el principio, simplemente se trata de usar un método diferente, pero en esencia es lo mismo.

Te invito a leer el link que dejé mas arriba, porque con MySQLi no solo se gana seguridad y demás (que tambien está muy bien) sino que accedes a carácteristicas de las bases de datos con versiones superiores a la 4.3.1 que la extensión MySQL no te puede ofrecer, porque no esta diseñada para ello.

Saludos!
La dedicación de mi respuesta sera directamente proporcional a la dedicación de tu pregunta.
Hacer códigos que entiendan las máquinas es fácil, lo difícil y realmente útil es hacer códigos que entiendan las personas.
http://twitter.com/CarlosRdrz
http://www.carlosrdrz.es

Desconectado matesasesinos

  • PHPerit@
  • *
  • Mensajes: 1
  • Karma: 0
  • Nuev@ PHPer@
    • Ver Perfil
Re:[TUT!] Manual mysqli
« Respuesta #24 en: 02 de Abril de 2012, 22:42:14 pm »
Hola, vine a aprender. Me parecio muy interesante esto de MySQLi, lo habia visto por ahi pero no le habia prestado atención hasta que vi este foro. Me gusto el primer tuto.. no encuentro el resto je...  :-[ (ya se, doy asco) donde los puedo encontre (ya probe con el buscador y no me da bola). Gracias che.