Manipulation de SQL: remarques préliminaires
Posté : 03 oct. 2013, 16:31
I Mysql
Mysql est déclaré obsolète et sera donc abandonné dans une version ultérieure:
toute application qui y recourt, sauf si elle passe par des fonctions personnelles, devra être modifiée...
Evidemment, si on a écrit:
et de même pour toutes les fonctions, ça réduira le travail.
Mais, pour l'avoir fait pour assurer la compatibilité de mon code entre mysqli et sqlite sans passer par PDO, je peux dire que c'est du sport.
II Requêtes MySqli
Je vois souvent dans les questions des choses de ce genre:
ce qui est mieux que rien sauf le recours à mysql.
Mais le message d'erreur n'est souvent pas compris.
Il me semble préférable de procéder ainsi:
III Variables et requêtes.
On voit souvent ça:
"UPDATE users SET situation='{$_GET['nature']}' WHERE pseudo='{$_SESSION['pseudo']}' and dieu_sait_quoi = '{$_SESSION['dieu_sait_quoi']}'"
Je trouve plus clair:
Mysql est déclaré obsolète et sera donc abandonné dans une version ultérieure:
toute application qui y recourt, sauf si elle passe par des fonctions personnelles, devra être modifiée...
Evidemment, si on a écrit:
Code : Tout sélectionner
function connexion ($hote, $nom, $passe)
{
$lien = mysql_connect("localhost", "mysql_user", "mysql_password")
or die("Impossible de se connecter : " . mysql_error());
return $lien;
}Mais, pour l'avoir fait pour assurer la compatibilité de mon code entre mysqli et sqlite sans passer par PDO, je peux dire que c'est du sport.
II Requêtes MySqli
Je vois souvent dans les questions des choses de ce genre:
Code : Tout sélectionner
mysql_query("UPDATE users SET situation='divorcé' WHERE pseudo='mickey_la_banane' ")
or die(mysql_error());Mais le message d'erreur n'est souvent pas compris.
Il me semble préférable de procéder ainsi:
Code : Tout sélectionner
$requete= ""UPDATE users SET situation='divorcé' WHERE pseudo='mickey_la_banane' ";
$resultat = mysqli_query ($requete);
if ($resultat == false)
{
print "traitement échoué<br />$requete";
//et un véritable traitement de l'erreur enregistrant le module et la reqête
//on peut ainsi passer la reqête dans PHPmyadmin ou autre, et la modifier jusqu'à ce qu'on ait trouvé
}
else
{
print "traitement réussi";
}On voit souvent ça:
"UPDATE users SET situation='{$_GET['nature']}' WHERE pseudo='{$_SESSION['pseudo']}' and dieu_sait_quoi = '{$_SESSION['dieu_sait_quoi']}'"
Je trouve plus clair:
<?php
$erreur = 0;
if (isset($_GET['nature']) )
{
$nature = $_GET['nature'] ;
if (isset ($_SESSION['pseudo']))
{
$pseudo = $_SESSION['pseudo'];
if (isset($_SESSION['dieu_sait_quoi']))
{
$dieu_sait_quoi = $_SESSION['dieu_sait_quoi'];
}
else
{
$erreur = 3;
}
}
else
{
$erreur = 2;
}
}
else
{
$erreur = 1;
}
if ($erreur == 0)
{
$requete = "UPDATE users SET situation='$nature' WHERE pseudo='$pseudo' and dieu_sait_quoi = '{$'dieu_sait_quoi''";
//et traitement comme ci-dessus
}
else
{
//traitement d'erreur
}