PHP7 Cap 15
PHP7 Cap 15
De novato a experto
Capítulo 15: Conexión con MySQL
Objetivo: El alumno aprenderá a conectarse a MySQL, así como a insertar, modificar,
seleccionar y eliminar datos de las tablas de la misma.
Introducción:
Una de las razones por lo que es tan popular PHP es por su conexión con MySQL. En esta
sección estudiaremos la forma de conectarnos a MySQL, que prácticamente han crecido
juntas. Los temas que revisaremos son:
● Crear la base de datos y una tabla de prueba
● Conectar una base de datos MySQL con PHP
● Las sentencias include y require
● Insertar un registro en la base de datos
● Borrar un registro de una tabla
● Modificar un registro de la tabla
● Seleccionar archivos de una tabla, el comando SELECT
● Establecer el conjunto de caracteres para la base de datos
● Recuperar el último “id” insertado
● Leer un archivo CSV e insertarlo en una tabla MySQL
● Verificar que los datos no se dupliquen.
● Bajar la información de MySQL a CSV .
Todo PHP7
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>MySQL | Connect</title>
5 <meta charset="utf-8">
6 <?php
7 $host = "localhost";
8 $usuario = "root";
9 $clave = "root";
10 $db = "quiz";
11 $puerto = "3308";
12 //
$conn = mysqli_connect($host, $usuario, $clave, $db, $puerto) or die("Error al
13
conectar la base de datos");
14 print "Conexión exitosa";
15 ?>
16 </head>
17 <body>
18
19 </body>
20 </html>
Listado 15.2.1. MySQLConnect.php
● Por medio del comando DELETE podemos eliminar lo registros de una tabla. Una vez
borrados, no se pueden recuperar.
● Siempre hay que utilizar el comando WHERE, de lo contrario se borrarán todos los registros de
la tabla.
● La sentencia SELECT nos permitirá seleccionar los registros de una tabla. En PHP los
registros seleccionados se almacenarán en un”recurso”.
● La sintaxis de la sentencia SELECT es:
1 <?php
2 require "php/conn.php";
3
4 $archivo = fopen("prueba.csv","r");
5
6 $inicio = true;
7
8 while (!feof($archivo)) {
9
10 //Leemos el registro en fromato CSV
11 $data = fgetcsv($archivo);
12
13 if ($inicio) {
14 $inicio = false;
15 continue;
16 }
17 $sql = "INSERT INTO preguntas VALUES(0,";
18 $sql.= "'".$data[1]."', ";
19 $sql.= "'".$data[2]."', ";
20 $sql.= "'".$data[3]."', ";
21 $sql.= "'".$data[4]."', ";
22 $sql.= "'".$data[5]."', ";
23 $sql.= $data[6].", ";
24 $sql.= "'".$data[7]."')";
25
26 //DML
27 if (mysqli_query($conn, $sql)) {
28 $id = mysqli_insert_id($conn);
29 print "<p>Se insertó correctamente el registro con el id ".$id."</p>";
30 } else {
31 print "<p>Error al insertar el registro</p>";
32 }
33 }
34 fclose($archivo);
35 ?>
Listado 15.9.1. MySQLarchivosCSV.php
1 <?php
2 require "php/conn.php";
3
4 $archivo = fopen("prueba.csv","r");
5
6 $inicio = true;
7
8 while (!feof($archivo)) {
9
10 //Leemos el registro en fromato CSV
11 $data = fgetcsv($archivo);
12
13 if ($inicio) {
14 $inicio = false;
15 continue;
16 }
17 $sql = "INSERT INTO preguntas VALUES(0,";
18 $sql.= "'".$data[1]."', ";
19 $sql.= "'".$data[2]."', ";
20 $sql.= "'".$data[3]."', ";
21 $sql.= "'".$data[4]."', ";
22 $sql.= "'".$data[5]."', ";
23 $sql.= $data[6].", ";
24 $sql.= "'".$data[7]."')";
25
26 //DML
27 if (mysqli_query($conn, $sql)) {
28 $id = mysqli_insert_id($conn);
29 print "<p>Se insertó correctamente el registro con el id ".$id."</p>";
30 } else {
31 print "<p>Error al insertar el registro</p>";
32 }
33 }
34 fclose($archivo);
35 ?>
Listado 15.10.1. MySQLarchivosCSV.php
1 <?php
2 require "php/conn.php";
3
4 $archivo = fopen("prueba.csv","r");
5
6 $inicio = true;
7
8 while (!feof($archivo)) {
9
10 //Leemos el registro en fromato CSV
11 $data = fgetcsv($archivo);
12
13 if ($inicio) {
14 $inicio = false;
15 continue;
16 }
17 $sql = "SELECT id FROM preguntas WHERE pregunta='".$data[1]."'";
18
19 //DQL Data Query Lenguage
20 $r = mysqli_query($conn, $sql);
21 $num = mysqli_num_rows($r);
22
23 //Si el numero de renglones es cero => no existe la pregunta
24 if($num==0){
25 $sql = "INSERT INTO preguntas VALUES(0,";
26 $sql.= "'".$data[1]."', ";
27 $sql.= "'".$data[2]."', ";
28 $sql.= "'".$data[3]."', ";
29 $sql.= "'".$data[4]."', ";
30 $sql.= "'".$data[5]."', ";
31 $sql.= $data[6].", ";
32 $sql.= "'".$data[7]."')";
33
34 //DML
35 if (mysqli_query($conn, $sql)) {
36 $id = mysqli_insert_id($conn);
37 print "<p>Se insertó correctamente el registro con el id ".$id."</p>";
38 } else {
39 print "<p>Error al insertar el registro</p>";
40 }
41 } else {
42 print "<p>La pregunta está duplicada: ".$data[1]."</p>";
1 <?php
2 require "php/conn.php";
3
4 //DQL
5 $sql = "SELECT * FROM preguntas";
6 $r = mysqli_query($conn, $sql);
7 $num = mysqli_num_rows($r);
8
9 touch("data.csv");
10 $archivo = fopen("data.csv","w");
11
12 while ($data =mysqli_fetch_array($r,MYSQLI_NUM)) {
13 fputcsv($archivo, $data);
14 }
15 print "Se tranfirieron ".$num." registros";
16 fclose($archivo);
17 mysqli_close($conn);
18 ?>
Listado 15.12.1. MySQLcreaCSV.php
Cuestionario:
1) ¿Cuál de estas instrucciones se utiliza para realizar una consulta a una base de datos
MySQL?
1) mysqli_query
2) mysqli_access
3) mysqli_db_access
3) PHP nos permite conectarnos a base de datos de MySQL utilizando métodos y/o
objetos
1) Verdadero
2) Falso
6) ¿Cuál es la forma correcta de abrir una conexión con una base de datos MySQL?
1) connect_mysqli();
2) dbopen();
3) mysqli_open();
4) mysqli_connect();
11) ¿Qué funciones se emplean para abrir y cerrar una conexión en PHP?
1) mysqli_open() y mysqli_close()
2) mysqli_open() y mysqli_disconnect()
3) mysqli_connect() y mysqli_close()
4) mysqli_connect() y mysqli_disconnect()
12) En PHP y MySQL, para obtener el número de filas devueltas por un resultado, se
utiliza la función:
1) mysqli_affected_rows()
2) mysqli_ list_ fields()
3) mysqli_num_rows()
4) Las anteriores respuestas no son correctas
14) En PHP y MySQL, para obtener el número de filas que han sido borradas con una
sentencia DELETE, se utiliza la función
1) mysqli_affected_rows()
2) mysqli_ list_ fields()
3) mysqli_num_rows()
4) Las anteriores respuestas no son correctas
17) En una tabla de MySQL pueden existir muchos campos de tipo auto increment:
1) Verdadero
2) Falso
18) Señala cual tipo de campo tiene una longitud variable y su longitud debe ser indicada
por el usuario.
1) varchar
2) date
3) int
4) double
Indice