PHP -MySQL
Connection à une BDD MySQL
Connection non-persistante :
$db= mysql_connect($host,$login,$password);
if(!$db)
{
echo"Connexion Error!". mysqlerror();
}
Connection persistante :
$db = mysql_pconnect($host,$login,$password);
if(!$db)
{
echo"Connexion Error!". mysqlerror();
}
Deux différences majeures avec la première option :
a fonction essaie de trouver une connexion permanente déjà ouverte sur cet hô;te, avec le même nom d'utilisateur et de
mot de passe. Si une telle connexion est trouvée, son identifiant est retourné, sans ouvrir de nouvelle connexion.
Deuxièmement, la connexion au serveur MySQL ne sera pas terminée avec la fin du script. Au lieu de cela, le lien sera
conservé pour un prochain accès.
Sélection à la BDD :
$db= mysql_connect($host,$login,$password);
if(!$db)
{
echo"Connexion Error!". mysqlerror();
}
else
{
mysql_select_db($db_uname,$db);
}
Ping sur la BDD : mysql_ping
if(!mysql_ping($db)){
echo"Perte de la connexion";
}
Fermeture de la connection : mysql_close
mysql_close($db);
Requête : mysql_query
$sql="SELECT * from user";
$req=mysql_query($req);
//Gestion de l'erreur
if(!req){
echo"SQL Error";
}
//ou
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
Nombre résultat : mysql_num_rows
$sql="SELECT * from user";
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
$nb=mysql_num_rows($req);
Exploiter le résultat : mysql_fetch_...
Mysql_fetch_assoc
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
if(mysql_num_rows($req))
{
while($data=mysql_fetch_assoc($req))
{
echo $data['id'];
echo $data['name'];
}
}
Mysql_fetch_array
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
if(mysql_num_rows($req))
{
while($data=mysql_fetch_array($req))
{
echo $data[0];
echo $data[1];
}
}
De prime abord, on a compris que le résultat de la requête était contenu dans un tableau :
Associatif
indexé
voir les 2 ( et oui !!)
Le mysql_fetch_assoc renvoie le résultat de la requête était contenu dans un tableau associatif d'où sa terminaison.
Le mysql_fetch_array renvoie le résultat de la requête était contenu dans un tableau (terminaison ;) dans lequel on peut déterminer le mode
Tableau indexé :
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
if(mysql_num_rows($req))
{
while($data=mysql_fetch_array($req,MYSQL_NUM))
{
echo $data[0];
echo $data[1];
}
}
Tableau associatif :
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
if(mysql_num_rows($req))
{
while($data=mysql_fetch_array($req,MYSQL_ASSOC))
{
echo $data['id];
echo $data['name'];
}
}
Tableau associatif et indexé :
$req=mysql_query($req) or die("SQL Error :".$sql."
". mysql_error());
if(mysql_num_rows($req))
{
while($data=mysql_fetch_array($req,MYSQL_BOTH))
{
echo $data['id'];
echo $data[1];
}
}
Connaitre le nombre de champs modifiés : mysql_affected_rows
$sql="DELETE FROM ...";
mysql_query($sql);
echo "Nombre de champe modifié". mysql_affected_rows();
Libération de la mémoire : mysql_free_result
mysql_free_result($req);