IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

thumbs

Introducció

MySQL és un Sistema de Gestió de Bases de Dades Relacional, multifil i multiusuari, que utilitza el llenguatge SQL (Structured Query Language). Existeixen les BD Relacionals, Jeràrquiques i en Xarxa.

  • Anys 60: Només existien BD Jeràrquiques i en Xarxa.
  • Anys 70: Es comencen a utilitzar les BD Relacionals.
  • Ingres: Llenguatge de BD creat a la Universitat de Berkeley.
  • Oracle: Empresa que disposa dels 2 gestors de BD més utilitzats: Oracle (de pagament) i MySQL (lliure).
  • PostgreSQL: Gestor de BD lliure.
  • Model en xarxa: model que ja està obsolet i que quasi no s'utilitza.
  • Model jeràrquic: és una estructura en forma d'arbre (LDAP encara l'utilitza).

Història del projecte

MySQL va ser creat per l'empresa sueca MySQL AB. Al 2008 aquesta va ser comprada per Sun i al 2009 per Oracle.

Objectius de MySQL

Tant MySQL com la resta de SGBD intenten assolir els següents objectius:

  • Possibilitar les consultes no predefinides de qualsevol complexitat.
  • Garantir la independència física i la independència lògica de les dades.
  • Evitar o solucionar els problemes derivats de la redundància.
  • Protegir la integritat de les dades.
  • Permetre la concurrència d’usuaris.
  • Contribuir a la seguretat de les dades.

Instal.lació

Instal·lació manual:

$ sudo apt-get install mysql-server

Per eliminar:

$ sudo apt-get remove mysql-server

Esborrat manual:

$ sudo apt-get remove mysql-server-5.1

Tasksel

Per instal·lar MySQL. Tasksel (selector de tasques). Utilitza NCOURSES (llibreria que permet emular entorn gràfic).

BDJaumeS 1.png

Si s'instal·la LAMP server, ja inclou la instal·lació de MySQL (LAMP = Linux - Apache - MySQL - PHP).

Fitxers instal·lats

El problema de les aplicacions gràfiques és que t'amaguen detalls (no sap ben bé quins paquets has instal·lat). Per poder-ho saber:

$ dpkg -l | grep mysql

ensenya tots els paquets del sistema

BDJaumeS 2.png
$ dpkg -L mysql-server

ensenya els paquets que li diem que volem. En aquest cas, mysql-server és un paquet tonto. Conté una dependència (mysql-server-5.1), que és realment el servei MySQL.

Per poder funcionar el servidor, necessitem el client (mysql-client-5.1).

mysql-server-core-5.1: nucli imprescindible.

BDJaumeS 4.png

libmysqlclient16: biblioteca de funcions que utilitza MySQL.

BDJaumeS 5.png

php5-mysql: paquet

libqt4-sql-mysql: per poder treballar en entorn gràfic.

Control del servei MySQL

Per arrencar:

$ sudo /etc/init.d/mysql start

Per aturar:

$ sudo /etc/init.d/mysql stop

Per reiniciar:

$ sudo /etc/init.d/mysql restart

Per fer una actualització

$ sudo /etc/init.d/mysql reload

Aquesta comanda evita el parar i tornar a engegar. Renova la informació sense aturar MySQL.

NOTA: En versions modernes, per controlar el servei s'utilitza service:
$ sudo service mysql start/restart/stop

Si mysql és quedés penjat, la manera d'aturar-lo és amb kill:

$ sudo kill -9 4130
  • -9: opció per acabar ja.

Comprovar si funciona MySQL

  • Per connectar-nos a MySQL:
$ sudo mysql -p

IMPORTANT: Si ens oblidem del password, amb la comanda:
$ sudo dpkg-reconfigure mysql-server-5.1
pararà la BD i tornarà a demanar-nos un password

  • Mirar si el port està obert:
$ nmap localhost

si fem:

$ nmap 192.168.202.x

on veurem si el port de MySQL està obert o no.

NOTA: Per saber els ports de MySQL:
/etc/services

Per obrir el port 3306 (què és el que té assignat MySQL):

$ sudo nc -l -p 3306

Per mirar si s'està executant el procés

$ ps aux | grep mysqld

Configuració

Per saber que s'ha instal.lat

$ dpkg -L mysql-server-5.1 | grep "/etc"
BDJaumeS 6.png
  • /var/lib/mysql: lloc on està guardades les llibreries de MySQL

/etc/mysql/my.cnf

És un paquet on hi ha fitxers. És crea durant la instal.lació.

BDJaumeS 7.png

La ubicació del fitxer és pot decidir. Per defecte s'ubica aquí. Per consultar el fitxer, però mirant només les línies que ens interessin, utilitzem la comanda grep:

$ cat /etc/mysql/my.cnf | grep -v '^#'
  • -v: dona més informació.
  • el símbol carat (^) és una expressió regular que indica començament de línia.

La combinació -v i ^# fa que només s'ensenyi les línies en blanc i aquelles que no estiguin comentades (#).

Per guardar el fitxer sense els comentaris: Primer creem una còpia del original:

$ mv /etc/mysql/my.cnf /etc/mysql/my.cnf.original

i després fem la comanda:

$ sudo bash -c "cat /etc/mysql/my.cnf.original | grep -v '^#' > /etc/mysql/my.cnf"

IMPORTANT: Sempre que fem un canvi dins del fitxer, després es té que reiniciar

Tal i com està configurat ara MySQL només ens podem connectar per local.

BDJaumeS 9.png

Dins de /var/run és on es guarden els fitxers variables (fitxers que varien en el temps).

BDJaumeS 10.png
  • nice: prioritat. No tot els processos són importants.
BDJaumeS 11.png
  • usuari (user): fica mysql per seguretat. MySQL és un usuari corrent i així s'evita que els serveis s'executin com a superusuari.
  • datadir: on estan guardades les BD.
BDJaumeS 12.png
  • bind-address: adreça IP on posem a escoltar el servidor.
BDJaumeS 13.png
  • includedir: tots els fitxers de configuració d'aquesta carpeta s'inclouen aquí.

/etc/mysql/conf.d

Si afegim fitxers aquí, seran configuracions extres pel MySQL

BDJaumeS 8.png


Fitxers de registre

Fitxers de log

  • /var/log/mysql/error.log: problemes del servidor.


Eines gràfiques

MySQL

Instal·lació mysql-admin

$ sudo apt-get install mysql-admin

i comprobem què és el que s'ha instal·lat amb la comanda:

$ sudo dpkg -L mysql-admin | grep bin
BDJaumeS 16.png

mysql-admin és una eina gràfica per administrar el servidor. Quan executem mysql-admin des de línies de comandes ens surt una pantalla on tenim que ficar un usuari i la seva contrasenya.

BDJaumeS 17.png
  • Server Information: Recull informació del servidor i del host.
BDJaumeS 18.png


  • Service Control: Alternativa al service.
BDJaumeS 19.png
  • Startup Parameters: Per canviar els paràmetres de configuració.
BDJaumeS 20.png
  • User Administration: Per fer la gestió d'usuaris.
BDJaumeS 21.png
  • Server Connections: Connexions al servidor. Per saber quanta gent tens connectada al servidor.
BDJaumeS 22.png
  • Health: Per saber el trànsit, consultes, ...
BDJaumeS 23.png
  • Server Log: Per saber els possibles errors.
BDJaumeS 24.png
  • Backup: Còpies de seguretat.
BDJaumeS 25.png

Instal·lació mysql-query-browser

$ sudo apt-get install mysql-query-browser

Ens surt una pantalla on tenim que ficar un usuari i la seva contrasenya.

BDJaumeS 26.png
  • Escribim la comanda en la part superior (espai en blanc) i donem a Execute.
BDJaumeS 27.png
  • En la part dreta (baix) trobem un requadre que ens pot servir d'ajuda en la sintaxi, funcions, ...
BDJaumeS 28.png
  • També en la part dreta (dalt) trobem un requadre on surten les diferents bases de dades que tenim i una pestanya History que pot ser de molta utilitat.
BDJaumeS 29.png

Instal·lació workbench

Pàgina oficial on podem descarregar el workbench

  • Primer seleccionem la versió que necessitem segons el nostre sistema operatiu.
BDJaumeS 30.png
  • Podem escollir l'opció de descarregar el programa sense tenir-nos que enregistrar.
BDJaumeS 31.png
  • Deixem que el sistema operatiu l'instal·li.
BDJaumeS 32.png


BDJaumeS 33.png
  • Tot i haver-hi paquets no autenticats, continuem el procediment d'instal·lació.
BDJaumeS 34.png
  • Una vegada acabada la instal·lació, aquesta és la pàgina principal.
BDJaumeS 35.png

Instal·lacio phpMyAdmin

$ sudo apt-get install phpmyadmin

Demanarà dos password: root i phpmyadmin password (l'utilitza l'aplicació i no la utilitzarem mai més), i després, en la URL fiquem:

http://localhost/phpmyadmin
  • A continuació ens surt la pantalla principal on tenim que ficar l'usuari i la contrasenya.
BDJaumeS 36.png
  • Una vegada ficat l'usuari i la contrasenya, ja podem accedir a la pantalla principal del programa.
BDJaumeS 37.png

tunel ssh

Per poder-ho fer, hem de tenir connexió amb la màquina.

$ ssh -L 5678:localhost:3306 [email protected]

M'haig de connectar xifradament per poder passar per allà xifrat. D'aquesta manera, vas connectant maquines entre si.

SQL

Comandes

Per saber les comandes que tenim instal·lades:

$ dpkg -L mysql-client-5.1 | grep bin

BDJaumeS 38.png

Comanda mysql

Per entrar:

$ mysql -h localhost -u root -p
BDJaumeS 39.png

Si escribim help, és una ajuda de com funciona la terminal que acabem d'obrir

BDJaumeS 40.png

Podem escriure múltiples comandes, però fins que no fiquem ";", no s'executa.

Comanda SHOW

[1]

$ SHOW DATABASES;

Mostra les bases de dades que tenim (result set - conjunt de resultat).

BDJaumeS 41.png

Per defecte (venen amb la instal·lació) tenim 2 bases de dades: information_schema i mysql.

Comanda USE

Utilitzem:

$ USE mysql;

i després ja podem veure les taules que tenim amb la comanda:

$ SHOW TABLES;
BDJaumeS 42.png

Comanda mysqldump

Dump: bolcar. Agafa una BD o un subconjunt i la converteix a les comandes SQL necessàries per tornar-la a crear (tipus còpia de seguretat).

$ mysqldump -u root -p mysql > copiamysql.sql
BDJaumeS 47.png

Per restaurar una BD, es fa amb la comanda:

$ sudo mysql -p < webfaltesdemo_dep_info.sql
BDJaumeS 48.png

Si teniem la BD creada, la tornarà a restaurar. Si no està creada, dins del fitxer .sql, s'han de ficar, al principi del fitxer, les línies:

CREATE DATABASE webfaltes;

Amb aquesta comanda creem la BD webfaltes.

USE webfaltes;

Amb aquesta comanda li diem que la utilitzi.

BDJaumeS 49.png

Per crear un fitxer que ens faci automaticament les comandes, es pot fer amb un fitxer php. Un exemple de fitxer php seria:

<?php

$USUARI="Pepito";

echo <<<EOF
	<html>
	<head>
	<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8"></META>
	<META HTTP-EQUIV="ATRIBUT" CONTENT="VALOR"></META>
	</head>
	<body>
		<h1>Hola $USUARI!</h1>
	</body>
	</html>
EOF

?>
BDJaumeS 51.png

Base de dades mestres

MySQL

Dins de la taula mysql, utilitzarem la user.

BDJaumeS 42.png

Si fem:

mysql> SELECT * FROM user\G;
BDJaumeS 43.png

ens mostra tota la informació. Una manera de restringir aquestes dades seria:

mysql> SELECT user.User,user.Password,user.Host FROM user;
BDJaumeS 44.png

Hi ha 2 usuaris que estan per defecte: el root i el debian-sys-maint (l'utilitza l'Ubuntu per fer gestions), tots en localhost.

Per crear un usuari amb tots els permisos

$ mysql -u root -p
mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_pass';
BDJaumeS 45.png
mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' WITH GRANT OPTION;

Li donem tots els permisos a totes les taules de totes les bases de dades.

mysql> FLUSH PRIVILEGES;

Tornem a llegir la cache de privilegis (flush - refrescar/actualitzar la cache).

Si sortim i tornem a entrar amb l'usuari creat:

BDJaumeS 46.png


És més habitual crear un usuari amb tots els permisos per a una base de dades concreta.

mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON database_name.* TO 'user'@'%' WITH GRANT OPTION;


Esborrar una BD
$ sudo apt-get remove --purge mysql-common mysql-server ...

S'han d'anar ficant tots els paquets que volem esborrar.

$ sudo rm -rf /var/lib/mysql

Amb aquesta comanda esborrem totes les BD (tant les que volem esborrar com les que no volem). És important mirar abans si hi ha una còpia de seguretat de les BD per evitar accidents a l'hora d'utilitzar aquesta comanda.

Storage Engines

És la forma en la que es guardara realment la informació en el sistema de fitxers subjacent. Les dades es guarden en el directori /var/lib/mysql. Per cada BD, hi ha una carpeta.

BDJaumeS 55.png

Creem una BD que li direm prova. Una vegada creada, també creem una taula, i en el directori de l'esmentada BD apareixen 3 arxius nous (.frm, .MYD, .MYI).

BDJaumeS 56.png

Per saber les mides dels arxius, utilitzarem la comanda:

$ ls -lah
BDJaumeS 57.png
  • .frm: es guarda la definició de la taula (clau primària, estructura, ...).
  • .MYD: buit. Guarda les dades comprimides.
  • .MYI: (emmagatzema els indexs -la informació dels indexs-, i encara no hi ha cap).

La comanda file ensenyarà el contingut dels fitxers.

BDJaumeS 58.png


MyISAM

InnoDB

Replicació

Fer una còpia exacta de la BD. Es busca que la còpia es realitzi tant aviat com hi ha hagut una modificació a la BD.

Master

Cal activar la connexió al servidor per TCP/IP (skip_networking a versions antigues de MySQL):

$ sudo nano /etc/mysql/my.cnf
[...]
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
#bind-address           = 127.0.0.1
[...]

Escollim la base de dades:

log-bin = /var/log/mysql/mysql-bin.log
binlog-do-db=exemple
server-id=1

Apliquem els canvis:

$ sudo service mysqld restart

Creem un usuari amb privilegis amb:

$ sudo mysql -p
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY '<some_password>'; (Replace <some_password> with a real password!)
FLUSH PRIVILEGES;
USE exampledb;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;

L'última comanda mostrarà quelcom similar a:

+---------------+----------+--------------+------------------+
| File          | Position | Binlog_do_db | Binlog_ignore_db |
+---------------+----------+--------------+------------------+
| mysql-bin.006 | 183      | exampledb    |                  |
+---------------+----------+--------------+------------------+
1 row in set (0.00 sec) 

Apunteu aquesta informació! Sortiu de la consola SQL:

> quit;

Obteniu una copia de la base de dades:

$ mysqldump -u root -p<password> --opt exampledb > exampledb.sql 

Finalment:

$ mysql -u root -p
Enter password:
> UNLOCK TABLES;
> quit;

Slave

S'edita el fitxer my.cnf, que es troba dins de /etc/mysql.

Es descomenta la línia server-id, i se li dona valor 2. Després, s'han d'afegir aquestes 2 línies:

master-connect-retry=60
replicate-do-db=worldcopia

Després reiniciem el servei amb la comanda:

$ sudo /etc/init.d/mysql restart

Ara creem la base de dades a partir de la copia de la master:

$ mysql -u root -p
> CREATE DATABASE worldcopia;
> quit;

A continuació realitzem:

/usr/bin/mysqladmin --user=root --password=rootsqlpassword stop-slave 
cd /tmp
mysql -u root -p rootsqlpassword worldcopia < world.sql

Anteriorment a la última comanda, el master ens ha tingut que passar la BD que ha creat. Ens connectem un altre cop:

$ mysql -u root -p

I executem:

> CHANGE MASTER TO MASTER_HOST='192.168.x.x', MASTER_USER='slave_user', MASTER_PASSWORD='slave_password', MASTER_LOG_FILE='mysql-bin.000002', MASTER_LOG_POS=106;

A continuació activem l'esclau:

> START SLAVE;

I podem comprovar l'estat amb:

> SHOW SLAVE STATUS \G;
mysql> show slave status \G;
*************************** 1. row ***************************
               Slave_IO_State: Waiting for master to send event
                  Master_Host: 192.168.202.101
                  Master_User: slave_user
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000002
          Read_Master_Log_Pos: 106
               Relay_Log_File: pc-imatge-relay-bin.000002
                Relay_Log_Pos: 251
        Relay_Master_Log_File: mysql-bin.000002
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB: worldcopia
          Replicate_Ignore_DB: 
           Replicate_Do_Table: 
       Replicate_Ignore_Table: 
      Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
                   Last_Errno: 0
                   Last_Error: 
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 106
              Relay_Log_Space: 410
              Until_Condition: None
               Until_Log_File: 
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File: 
           Master_SSL_CA_Path: 
              Master_SSL_Cert: 
            Master_SSL_Cipher: 
               Master_SSL_Key: 
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error: 
               Last_SQL_Errno: 0
               Last_SQL_Error: 
1 row in set (0.00 sec)

Exercici

Una vegada creada una BD i una taula, omplir-la.

#!/usr/bin/php
<?php
//error_reporting(E_ERROR);

require_once("/etc/mysqlpasswords");

$connexio = mysql_connect($HOST, $USER, $PASSWD);

mysql_set_charset('utf8',$connexio); 

if (!$connexio) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully\n";

$db_selected = mysql_select_db('prova', $connexio);
if (!$db_selected){
	die ('Can\'t use foo : ' . mysql_error());
}

for ($i=1; $i<=10000; $i++){
	mysql_query("INSERT INTO prova (name, ID) values ('jaume','$i')");
}

mysql_close($connexio);
?>

El resultat és:

BDJaumeS 59.png

i el fitxer s'incrementa:

BDJaumeS 60.png

Pràctica 1

Canviar la IP

Tenim la IP original:

BDJaumeS 12.png

i la canviem:

BDJaumeS 14.png

Reiniciem:

BDJaumeS 15.png

Pràctica 2

Fer un executable que ens connecti a MySQL i ens mostri una consulta.

#!/usr/bin/php
<?php
//error_reporting(E_ERROR);

require_once("/etc/mysqlpasswords");  // amb aquesta comanda anem a buscar els passwords a un altre fitxer (i no els mostrem aquí)

$connexio = mysql_connect($HOST, $USER, $PASSWD);

mysql_set_charset('utf8',$connexio);  // li diem que utilitzi els caràcters UTF-8

if (!$connexio) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';

// Utilitzar
$db_selected = mysql_select_db('webfaltes', $connexio);  // utilitzem la base de dades "webfaltes"
if (!$db_selected){
	die ('Can\'t use foo : ' . mysql_error());
}

$result = mysql_query("SELECT * from grup");  // ho seleccionem tot de la taula "grup"

$num_rows = mysql_num_rows($result);    // ens mostrarà els resultats de les caselles

echo "\nS'han trobat ". $num_rows . " columnes"."\n";

while ($row = mysql_fetch_assoc($result)){
	echo "Codi grup: ". $row["codi_grup"] . "\n";
	echo "Nom grup: ". $row["nom_grup"] . "\n";
	echo "Nivell educatiu: ". $row["nivell_educatiu"] . "\n";
	echo "\n";
}

mysql_close($connexio);

?>

El resultat és:

BDJaumeS 52.png

Subversion

Per pujar el fitxer al subversion utilitzem la comanda:

$ sudo svn import -m "primera pujada de fitxer" ~/mysqlexample/mysqlconnection.php http://www.iesebre.com/subversion/1asix/jaumesole/mysqlconnection.php

Pràctica 3

Crear una base de dades "usuaris" (funció mysql_xxx) Crear taula usuari (executant un "CREATE TABLE")

  • Camps:
  • Id: autoincremental
  • username: login
  • password: paraula de pas (en MD5, funció PHP)
  • name: nom complert de l'usuari
  • Inserir 4 usuaris nous (INSERT INTO)
  • Imprimir missatge als usuaris (ok, errors, informació, ...)
  • Mostrar els usuaris inserits amb una consulta
  • Elimineu 1 usuari (DELETE)
  • Mostreu els usuaris inserits amb una consulta
  • Modifiqueu la paraula de pas d'un usuari (UPDATE)
  • Elimineu la taula
  • Elimineu la base de dades
  • Imprimir missatge als usuaris (ok, errors, informació, ...)
#!/usr/bin/php
<?php
//error_reporting(E_ERROR);

require_once("/etc/mysqlpasswords");

$connexio = mysql_connect($HOST, $USER, $PASSWD);

mysql_set_charset('utf8',$connexio); 

if (!$connexio) {
    die('Could not connect: ' . mysql_error());
}
echo "Connected successfully\n";

// Crear base de dades
$sql1 = mysql_query('DROP DATABASE usuaris;');  // aquesta línia elimina la BD usuaris en cas que existis.
$sql = 'CREATE DATABASE usuaris';
if (mysql_query($sql, $connexio)) {
    echo "Database my_db created successfully\n";
} else {
    echo 'Error creating database: ' . mysql_error() . "\n";
}
$db_selected = mysql_select_db('usuaris', $connexio);
if (!$db_selected){
	die ('Can\'t use foo : ' . mysql_error());
}
// Crear taula usuaris
$sql9 = mysql_query('DROP TABLE usuari;');   // aquesta línia elimina la taula usuari en cas que existis.
$result = mysql_query('CREATE TABLE usuari (id int AUTO_INCREMENT, username VARCHAR(30), password VARCHAR(30), name CHAR(50), PRIMARY KEY (id))');
if (!$result){
	die ('Can\'t use foo : ' . mysql_error());
} else {
	echo "Creada la taula usuari\n";
}

mysql_query("INSERT INTO usuari (username, password, name) values ('jsole', 'jaume', 'jaume')");
printf("El registre s'ha insertat amb l'id %d\n", mysql_insert_id());

mysql_query("INSERT INTO usuari (username, password, name) values ('ssubirats', 'sergi', 'sergi')");
printf("El registre s'ha insertat amb l'id %d\n", mysql_insert_id());

mysql_query("INSERT INTO usuari (username, password, name) values ('gcolome', 'genis', 'genis')");
printf("El registre s'ha insertat amb l'id %d\n", mysql_insert_id());

mysql_query("INSERT INTO usuari (username, password, name) values ('ccarranza', 'christian', 'christian')");
printf("El registre s'ha insertat amb l'id %d\n", mysql_insert_id());

$result = mysql_query('SELECT * FROM usuari');
if (!$result) {
    die('Consulta incorrecta: ' . mysql_error());
}
 
 // mostrar els resultats
 
$num_rows = mysql_num_rows($result);
 
echo "\n";
echo "\nS'ha trobat " . $num_rows . " columnes.\n";
echo "\n";
 
while ($row = mysql_fetch_assoc($result)) {
   echo "id ". $row["id"] . "\n";
   echo "username - ". $row["username"] . "\n";
   echo "password - ". $row["password"] . "\n";
   echo "name - ". $row["name"] . "\n";
   echo "\n";
}

// eliminar un registre i mostrar els resultats actualitzats

$result = mysql_query('DELETE FROM usuari WHERE name="genis";');
echo "Usuari eliminat correctament.\n\n";

$result = mysql_query('SELECT * FROM usuari');
if (!$result) {
    die('Consulta incorrecta: ' . mysql_error());
}

$num_rows = mysql_num_rows($result);

while ($row = mysql_fetch_assoc($result)) {
   echo "id ". $row["id"] . "\n";
   echo "username - ". $row["username"] . "\n";
   echo "password - ". $row["password"] . "\n";
   echo "name - ". $row["name"] . "\n";
   echo "\n";
}

// modificar un password i mostrar el resultat

$result = mysql_query ("UPDATE usuari SET password ='123' WHERE name='sergi'");
	$result = mysql_query($sql);
echo "Modificació efectuada correctament.\n\n";

$result = mysql_query('SELECT * FROM usuari');
if (!$result) {
    die('Consulta incorrecta: ' . mysql_error());
}

$num_rows = mysql_num_rows($result);

while ($row = mysql_fetch_assoc($result)) {
   echo "id ". $row["id"] . "\n";
   echo "username - ". $row["username"] . "\n";
   echo "password - ". $row["password"] . "\n";
   echo "name - ". $row["name"] . "\n";
   echo "\n";
}

// Eliminació de la taula

$sql7 = mysql_query('DROP TABLE usuari;');
	echo "Taula eliminada satisfactoriament.";
	echo "\n\n",


// Eliminació de la base de dades

$sql8 = mysql_query('DROP DATABASE usuaris;');
	echo "Base de dades eliminada satisfactoriament.";
	echo "\n\n";

mysql_close($connexio);
?>

El resultat és el següent:

Subversion

Per pujar el fitxer al subversion utilitzem la comanda:

$ sudo svn import -m "primera pujada de fitxer" ~/mysqlexample/usuaris.php http://www.iesebre.com/subversion/1asix/jaumesole/usuarisn.php

Vegeu també

MySQL

SQL

Enllaços externs