MYSQL: Mostrar, añadir, modificar o eliminar datos con php

Ahora que ya sabemos como crear una base de datos, una tabla y un campo en mysql vamos a darle un poco de vidilla con mi querido php.

Conectar con la base de datos

Lo primero que tenemos que hacer es conectar con la base de datos, para ello crearemos una función, así nos ahorramos un poco de código, y ya que estamos creamos también la función para desconectar.


function Conectar(){
$link = mysql_connect("servidor","usuario","contraseña");
return $link;
}

function Desconectar($link){
mysql_close($link);
}

Acordaros de cambiar los parámetros servidor, usuario y contraseña, por los vuestros.

Realizar una consulta a una tabla

Para extraer el contenido de una tabla debemos realizar una consulta (query) a ésta, según lo que le indiquemos, nos devolverá un resultado u otro.

El procedimiento general para realizar una consulta es el siguiente:
1. Conectar con la base de datos (mysql_connect).
2. Escribir la consulta (query).
3. Enviar la consulta a la base de datos (mysql_query).
4. Desconectar de la base de datos (mysql_close).

Aunque entre los pasos 3 y 4 es donde podremos meter mano y hacer lo que nos plazca con esos datos..

Listar datos de una tabla.

$link = Conectar();
$q = "SELECT * FROM Tabla1 ORDER BY campo1 DESC";
$rs = mysql_query($q);
while ($row = mysql_fetch_array($rs)) {
		echo '<p>'.$row['campo1'].'</p>';
}
Desconectar($link);

Para a quién le suene a chino el código de arriba, os lo voy a explicar un poquito:
Variables: $link almacena la conexion a la base de datos, $q almacena la query, $rs almacena el resultado de ejecutar nuestra query en la base de datos y $row almacena el recorrido por las filas de nuestra tabla que cumplen las condiciones indicadas, $row es un array.
Bucle while: Recorre todas las filas de nuestra tabla, mientras se cumpla la condición especificada en la query.
Echo: muestra / interpreta contenido html dentro de php, para incluir una variable php dentro de ese html utilizaremos ‘.$variable.’ así podrá diferenciarla del html.
Para mostrar el contenido de un campo especifico, deberemos especificarlo en el array $row, por ejemplo si queremos mostrar el contenido de un campo de nuestra tabla llamado nombre, deberemos escribir: $row['nombre'].

Insertar, modificar y eliminar datos de una tabla.

$link = Conectar();
$q = "INSERT INTO Tabla1 (campo1, campo2) VALUES ('texto1','texto2')";
$rs = mysql_query($q);
if($rs == false) {
	echo '<p>Error al insertar los campos en la tabla.</p>';
}else{
	echo '<p>Los datos se han insertado correctamente.</p>';
}
Desconectar($link);


Insertamos los datos texto1 y texto2 en los campos campo1 y campo2.
If: Si el resultado devuelto es false, indica que no se ha ejecutado lo que le hemos indicado, si es distinto de false significará que se ha ejecutado correctamente.

$link = Conectar();
$q = "UPDATE Tabla1 SET campo1='texto1', campo2='texto2' WHERE campo3='texto3'";
$rs = mysql_query($q);
if($rs == false) {
	echo '<p>Error al modificar los campos en la tabla.</p>';
}else{
	echo '<p>Los datos se han modificado correctamente.</p>';
}
Desconectar($link);


Modificamos / actualizamos los datos que contienen campo1 y campo2 por los nuevos valores texto1 y texto2, siempre y cuando el campo3 contenga los datos texto3. Esto lo indicamos para que no nos modifique todas las filas de nuestra tabla.

$link = Conectar();
$q = "DELETE * FROM Tabla1 WHERE campo3='texto3'";
$rs = mysql_query($q);
if($rs == false) {
	echo '<p>Error al eliminar los campos en la tabla.</p>';
}else{
	echo '<p>Los datos se han eliminado correctamente.</p>';
}
Desconectar($link);


Eliminamos la fila de nuestra tabla que contenga el valor texto3 del campo texto3.

Análisis / explicación de las querys.
En los ejemplos anteriores os he puesto las consultas un poco “a lo bruto” sin explicarlas, así que voy a comentarlas un poquito por si no ha quedado muy clara la función de cada una.

SELECT * FROM Tabla1 ORDER BY campo1 DESC
El asterisco (*) indica que vamos a seleccionar todos los campos de la tabla Tabla1 y los vamos a ordenar de manera descendente (Z-A) segun el contenido del campo1.
En lugar del asterisco podriamos seleccionar campos específicos, la ordenación es algo opcional, si no lo indicamos se ordenaran de forma ascendente ASC (A-Z). También podemos limitar a que nos muestre sólo los 2 (o los que queramos) primeros resultados.
Quedaría asi: SELECT campo1, campo2, campo3, campo4 FROM Tabla1 LIMIT 2

INSERT INTO Tabla1 (campo1, campo2) VALUES (‘texto1′,’texto2′)
Insertamos en los campos campo1 y campo2 de la tabla Tabla1 los valores texto1 y texto2, debemos poner el valor asignado en el mismo orden que hemos puesto los campos.

UPDATE Tabla1 SET campo1=’texto1′, campo2=’texto2′ WHERE campo3=’texto3′
Actualizamos los campos indicados con sus nuevos valores, a cada uno el suyo, siempre y cuando el valor del campo3 sea texto3, de la tabla Tabla1.

DELETE * FROM Tabla1 WHERE campo3=’texto3
Eliminamos todos los campos de la fila de la Tabla1 en la que coincide texto3 como valor del campo campo3.

Existen muchos tipos de sentencias SQL, podéis aprender sobre todas gracias al Manual de referencia SQL.

Bueeeno, creo que esta vez me he enrrollado más de lo normal, perdonadme :D

73 pensamientos en “MYSQL: Mostrar, añadir, modificar o eliminar datos con php

  1. hola soy nuevecito en php, no se nada… pero me pareces que eres el mejor…
    con estas ayudas tuyas… creo que aprenderé algún día..
    gracias. Dios les bendiga

  2. Hola kharlos!
    Claro que aprenderás, si te lo propones pronto le cogerás la mano y verás que no es tan dificil.
    Por cierto, soy chica no chico xD
    Gracias por tu comentario! Saludos!

  3. como se le puede hacer para modificar uno o 2 campos, sin perder los otros campos que ya tienen informacion en la tabla, por ejemplo si en tu tabla tuvieras 5 campos ???

    Saludos y gracias.

  4. tengo una base de datos (en phpmyadmin) con 3 tablas (noticia,categoria,comentarios) en la pagina de noticias tengo que poder poner y ver comentarios, cuando le doy agregar comentario, si lo agrega a la base de datos pero no agrega el id de la noticia y la categoria,

    este es lo que tengo en comentarios:

    <?php
    if($_GET['btne']=="Enviar")
    {
    $a=$_GET['txtn'];
    $c=$_GET['txtc'];
    $fecha=date('Y-m-d H:i:s');
    $qc=("INSERT INTO comentario (id_comentario,noticia_id,comentario,autor_comen,fecha_comen,publicado) VALUES (null,'$id','$c','$a','$fecha',0)");
    $rc=mysql_query($qc, $link) or die(mysql_error());

    }

    Desconectar($link);

  5. Hola como estas soy carlos calzadilla de venezuela yo voy hacer un sistema y voy a trabajar con php y mysql . con symfony lo conoces???

  6. Hola, necesito mostrar los registros de una tabla agenda y luego borrar un registro que seleccionemos. Me los muestra bien, pero al borrar, no paso bien el id del registro seleccionado y no me lo borra. He probado con varias formas y casi todas son iguales pero sigue sin funcionarme.
    ¿Alguien me puede ayudar?

    Un saludo y gracias de antemano.

  7. Hola, gracias por tu deseo de compartir lo que sabes,
    una pregunta sobre la funcion conectar y desconectar
    como hago para no estar escribiendola o copiandola en todas las paginas que hago?

  8. hola quisiera saber como haser operaciones aritmetica en mysql
    o sea tengo que cargar los datos en una base de datos.
    tengo que canectar, agregar, y listar los datos cargados
    como tiene que ser porque soy nuevo en esto y no se como
    alguien me puede ayudar

  9. Nnatali, muy interesantes tus aportes, estoy estudiando informatica y soy malisimo para programar :/ si puedes me agregas a msn sprint10arrobahotmail.com para que me des una manito con unos codigos |.\ me enrredo mucho sobre todo en modificar y eliminar desde ya gracias >D

  10. dejo mi codigo para ver si puedes chequearlo porq cada vez q quiero guardar un cambio me borra un registro de la tabla.
    <?php
    if( isset($_POST[row_id]) )
    {
    $enlace = mysql_connect ('localhost','uv0814','univac0235');
    mysql_select_db("uv0814_2010", $enlace);
    if (!$enlace) {
    echo ' no se puede conectar al servidor’;
    exit();
    }
    if (!mysql_select_db(‘uv0814_2010′)){
    exit(‘ no encuentra la base de datos correspondiente a los Establecimientos Educativos.’);
    }
    $id = $_POST[row_id];
    $col=$_POST['col'];
    $codigo=$_POST['codigo'];
    $tabla=’web_0′.$col.’t’;
    $fechaexa= $_POST['fechaexa'];
    $a = substr($fechaexa,6,4);
    $m = substr($fechaexa,3,2);
    $d = substr($fechaexa,0,2);
    $fecha_espanol = $a.”-”.$m.”-”.$d;

    #variables
    $codigo==$_POST['codigo'];
    $e1_1=$_POST['e1_1'];
    $e1_2=$_POST['e1_2'];
    $e1_3=$_POST['e1_3'];
    $e1_4=$_POST['e1_4'];
    $e1_5=$_POST['e1_5'];
    $e2_1=$_POST['e2_1'];
    $e2_2=$_POST['e2_2'];
    $e2_3=$_POST['e2_3'];
    $e2_4=$_POST['e2_4'];
    $e2_5=$_POST['e2_5'];
    $e2_6=$_POST['e2_6'];
    $notamodu=$_POST['notamodu'];
    $coloquio=$_POST['coloquio'];
    $fechaexa=$fecha_espanol;
    $definitiva=$_POST['definitiva'];
    $observa_1=$_POST['observa_1'];
    $pg=$_POST['pg'];
    $grabado=’3′;

    #variables

    $result = mysql_query(“UPDATE $tabla SET e1_1=’$e1_1′,e1_2=’$e1_2′,e1_3=’$e1_3′,e1_4=’$e1_4′,e1_5=’$e1_5′,e2_1=’$e2_1′,e2_2=’$e2_2′,e2_3=’$e2_3′,e2_4=’$e2_4′,e2_5=’$e2_5′,e2_6=’$e2_6′,notamodu=’$notamodu’,coloquio=’$coloquio’,fechaexa=’$fechaexa’,definitiva=’$definitiva’,pg=’$pg’,observa_1=’$observa_1′,grabado=’$grabado’ WHERE codigo=’$codigo’row_id= ‘$id’”)or die(mysql_error());
    }else{
    echo “Debe especificar un ‘id’.\n”;

    }
    mysql_close($enlace);
    ?>

  11. tengo el siguiente problema :
    quiero actualizar mi bd

    utiliso este formulario:

    Codigo
    Oral Basico 1
    Oral Basico 2
    Oral Intermedio 1
    Oral Intermedio 2
    Oral Avanzado 1
    Oral Avanzado 2

    y para la conexion este :

    *****
    tener en cuenta q la tabla notasplatinum tiene varios campos pero yo solo quiero actualizar

    los campos q se dice en mi update !

  12. kiero mostrar los demas datos de mi base d datos… y solo me muestra 1

    0){
    $row = mysql_fetch_array($result7);
    $mensaje=$row["descripcion"];

    }
    echo”$mensaje”;
    ?>
    ese es mi kodigo en el pk articulo el numero es el el articukul o kisiera saber komo le hago para mostrarlos todos.. ya le kite el where y tampoko me da

  13. mira para crear comentarios te dejo el codigo y lo practicas va solo tendras que crear un archivo .txt y guardarlo en la misma carpeta junto con este archivo php.index y listo claro tendras que crear tu base de datos en mysql y la tabla
    <?php

    // nombre de archivo

    $file = "comments.txt";

    // valida form

    function form_validate () {

    if (sizeof($_POST) $value) {
    if (empty($name) || !isset($name)) {
    return false;
    }
    }
    return true;
    }

    function blank_replace ($str) {
    return str_replace (” “,”|”,$str);
    }

    function stick_escape ($str) {
    return str_replace (“|”,” “,$str);
    }

    if (form_validate()) {

    $fp = fopen ($file,”at”);
    fwrite ($fp,uniqid(rand(),true).” “.blank_replace($_POST['name']).” “.blank_replace($_POST['comment']).” “);
    fclose ($fp);
    }

    if (!file_exists($file)) {
    echo “No existen comentarios… aun!”;
    } else {

    $fp = fopen ($file,”r”);

    while ($info = fscanf ($fp,”%s %s %s “)) {
    list ($id,$name,$comment) = $info;
    ?>

    Nombre :

    Comentario:

    Nombre :

    Comentario :

  14. oye me podrias acesorar neesito hacer un motor de busqueda donde en un campo tipo texto se introdusa el nombre y aldarle click en un boton mande el nombre a una pg en php para buscarlo en la BD (mysql) y los resultados sean mostrados en un iframe que se encuentra en la misma pag del typo texto y boton de busqueda ese en si es mi problema

    de atemanop gracias

  15. Hola!!

    Como puedo hacer para eliminar los usuarios que inactivos durante 45 días, tengo una base de datos de 43.000 usuarios.. me interesa eliminar lo sucio…. Un sistema automático que me elimine los usuarios que durante 45 días no se han conectado a la web. Saludos!!!

  16. hola nnatali eres excelente, me parece tu informacion, cuentame que profesion tienes si se puede saber, y si a la vez quiero saber si tienes un mantenimiento de una base de datos con codignaiter?

  17. hola!!!!! alguien sabe como realizar una insercion tomando en cuenta que tienes una llave primaria con auto_increment. bueno tenia entendido que solo tendrias que dejar un espacio en blanco para que asignar un valor a la tupla pero al momento me marca error ???????

  18. Hola , soy nueva en php, mi pregunta es;
    tengo una base de datos (en phpmyadmin), como poder modificar , arreglar o cambiar , que una informacion cambie de color o resalte como pendiente, para poder ser visualizado por el usuario y que se dea cuenta cuantos docuementos se encuentran pendiente.
    Gracias por sua yuda…….

  19. Hola, nnatali, me gustaría que me ayudaras tengo una tabla en la que recojo algunos datos pero no sé como puedo hacer para que desde la web pueda editar el contenido de uno de sus campos que va a variar constantemente. Podrías ayudarme?

  20. hola.! lo que pasa es que estoy haciendo una galeria de fotos. y ago la consulta y si me muestra la primera foto. pero como le puedo hacer para que me muestre las demas fotos que estan en la base de datos

    <img src="img/” width =”490″ height=”300″>

    anterior siguiente

    No hay imagen

    ese es mi codigo ayuda por favor…

  21. Nnatali, excelente la explicacion felicitaciones.

    Tengo una consulta: Tengo una base de datos del cual he credo una lista con algunos campos de una tabla. Loque euiero es dar un click en un campo de esa lista y que me lleve al detalle completo de esa fila en otro formulario, Por favor como hago el link?

    Muchos saludos, y de antemano gracias por la respuesta

  22. Hola como stas nnatali, stoy tratando de insertar datos en una tabla dsd un form, pero no puedo insertar, puedo conectarme a la bd consultar registros pero no puedo ingresarlos.. he aki mi codigo:
    //$link=conectarse();
    $permi=mysql_connect(“localhost”,”root”,””);
    mysql_select_db(“pv”);

    $idcuston = $_POST['idcustom_f'];
    $name = $_POST['name_f'];
    $lname = $_POST['lname_f'];
    $address = $_POST['address_f'];
    $email = $_POST['email_f'];
    $phone = $_POST['phone_f'];
    $age = $_POST['age_f'];
    $ocupation = $_POST['ocupa_f'];

    mysql_query(“INSERT INTO customer(id_custom,name,lname,address,phone,email,age,ocupation)
    VALUES(‘$idcuston’,’$name’,’$lname’,’$address,’$phone’,’$email,’$age’,’$ocupation’)”);

    echo “Conexión con la base de datos conseguida.”;
    $consul=mysql_query(“select * from customer”);
    while($fila=Mysql_fetch_array($consul))
    {echo $fila['id_custom'].” “.$fila['name'].” “.$fila['lname'].” “.$fila['address'].” “.$fila['phone'].” “.$fila['email'].” “.$fila['age'].” “.$fila['ocupation'];
    echo “”;
    }
    mysql_close($permi);

  23. Alguien sab como borrar una fila, esue en un programa
    creo una fila pero luego no se borrarla, le pongo
    inspeccionar elemnto y me aparece el codigo, borro los
    elementos pero al volver a cargar la pagina me vuelven
    a aparecer.

    alguien me puede ayudar a borrarlos definitivamente

  24. Saludos, tengo una tabla q_members con varios campos uno de ellos se llama BROWSER y es para guardar la información del navegador del usuario; como hago para que cada vez que el usuario entre se actualice la información del navegador en caso de que este cambiase o dejar los datos iguales si son los mismos. espero me puedan ayudar! gracias!

  25. Hola! mira necesito saber como crear un formulario como este, que es de comentar tus dudas, tus opiniones y que todos tus usuarios de tu pagina puedan dejar un comentario por favor ayudameeeeee

  26. Quiero realizar un script que me liste los datos de las tablas de una base de datos, sin indicarle las tablas ni los campos. Está claro que con el PHPMYADMIN puedo realizar la visualización y modificación de los registros de la base de datos; pero quiero hacer una página de depuración y constatar las modificaciones que se realizan.
    Estoy implementando varios scripts que listan las tablas de la base de datos, pero no me funciona ninguno.
    ¿Alguien puede echarme una brizna de luz?

    Gracias, un saludo.

  27. Hola,

    tengo un problema, me han metido en la web miles de eventos y cada dia no paran de meterme publicidad de todo tipo, no se como eliminarlo todo porque esta en la base de datos y no tengo idea de como hacerlo, alguien puede ayudarme porque me estan llenando y no se como parar esto

    gracias

  28. buenos dias disculpen necesito un gran favor, x ejemplo m enviaron hacer un trabajo dond pueda eliminar, consultar, modificar y consultar pero todos estaran en un solo php o en documentos separados x favor les agradeceria su opinion es q no he trabajado con php

  29. Hola buenas,
    lo que trato de hacer es mostrar sola las filas de una tabla que en una columna tengan una determinada palabra: el usuario logueado.
    Tengo esto:

    //conexion BD ya hecha

    $user= $_SESSION['nick'];
    $usuario=$row[usuario];
    $result = mysql_query(“SELECT nombre, dia, mes, year, email, texto, email2 FROM cumples WHERE ‘$user’=’$usuario’”, $link);

    //ya tengo el código que muestra en una tabla los datos, pero la consulta me da error

    En la primera columna de la tabla cumples esta el nombre de usuario, quiero que con este código solo se muestren las filas de el usuario logueado en este momento.

    Gracias de ante mano.

  30. hola, tengo una duda y quizas alguien me pueda orientar..
    realizo una consulta la cual me arroja varias filas quiero saber como hacer para tomar todos esos valores y poder agregarlos en otra tabla que es igual a la original..

    es decir los registro q tengo son de una tabla que cree para q fuese algo asi como archivos temporales y si la persona confirma los guarde en la otra pero no se como hacer

    • Con respecto a la pregunta de pasar valores de una tabla a otra mmm hay varias maneras pon una forenkey en la tabla a la que desees enviar el id de la el campo, o hacer una consulta y obtener todos los campos y guardarlos en variables diferentes
      recuerda que puedes poner un campo que diga estado donde verificas que haga la comprobacion o le das de alta….. para modificar campos de una tabla supongo que si puedes y si no trata de buscar manuales en san inernet.
      por ejemplo para recoger los datos de un while()
      $var1=$datos['id'];
      $var2=$datos['name'];
      $var3=$datos['lastname'];
      y luego haces una comsulta para insertar los datos en una tabla diferente. solo es una idea, pero pueden existir mas trata y trata php y mysql es de ensayo y error y son esos errores que nos ayudan para aprender bendiciones

  31. nataly por fabor ponte en contacto me urge ayuda con php y mysql soy encargado de sistemas de una empresa de icorers vinos cervezas y artesanias =D y tengo problemtitas estoy dispuesto a pagar buen dinero por solucionar estos problem,as

  32. Hola Nati, buscando te encontre y deseo hacerte una consulta, yo muestro los registros de una tabla y deseo seleccionar uno de ellos para editarlo y cambiar algun dato del contenido del registro como lo hago?
    muchas gracias , feliz dia

  33. Buen aporte amix tu explicacion es tan bonita como lo eres tu
    ejem :D
    saludos
    no tendras algo mas avanzadito en php
    algunas funciones nuevas que no use ajax solo puro php
    te lo agradeceria
    estoy algo descontinuado por usar mucho dreamweaver te vuelve algo bruto jejejeeje

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>