Page 1 sur 1
PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 14:02
par polux78
Bonjour
Je poursuis mon passage à « mysqli » PHP 5.5.8 sur clé USB3
Requête UPDATE…
1 – Je n’ai pas d’erreur signalée en utilisant « mysql_connect » et « mysql_select » avec les autres fichiers en « mysqli »
2 – Adapter « mysqli_connect » me retourne bien le nom de la base
3 – Par contre « mysqli_select_db » me retourne « erreur de sélection » blocage du script.
4 – J’ai lu dans le manuel PHP que « mysqli_select_db » ne doit être utilisé que pour changer de base,
Cependant, si je supprime cette ligne…ça bloque !
Ou est mon bug ?
Merci pour votre aide
Polux78
CODE
// data base “paul”
// data table “conserves”
if(isset($_POST['d_new'])) $d_new=$_POST['d_new'];
else $d_new="";
// connexion à la base Conserves
mysql_connect($host,$user,$pass) or die ("Impossible de se connecter à MySQL"); //ça fonctionne
// $link = mysqli_connect($host,$user,$pass,$db) or die ("Impossible de se connecter à MySQL"); //ça fonctionne
/* Retourne le nom de la base de données courante */ //ça fonctionne
//if ($result = mysqli_query($link, "SELECT DATABASE()")) {
// $row = mysqli_fetch_row($result);
// printf("La base de données courante est %s.\n", $row[0]);
// mysqli_free_result($result);
//}
// sélection de la base
mysql_select_db($db) or die('Erreur de selection '.mysql_error()); // ça fonctionne
// mysqli_select_db($link) or die('Erreur de selection '.mysql_error()); //ça plante !
// $db_select = mysqli_select_db($link,paul);
// if (!$db_select) {
// die("Database selection failed: " . mysqli_error());
//}
// on écrit la requête sql
$query_string = "UPDATE conserves SET d_new='$d_new',….. etc
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 14:23
par or 1
comment as-tu fait dans ton message précédent pour te connecter à une base mysql et exécuter une requête ?
car là, tu dois te connecter à une base mysql et exécuter une requête.
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 15:03
par Ryle
Bonjour,
Si tu utilises le 4eme paramètre de la fonction mysqli_connect() pour spécifier la base de données utilisée, alors il ne faut effectivement pas faire appel à mysqli_select_db() pour définir le nom de la base de données par défaut : c'est déjà fait
mysqli_select_db() sert alors uniquement à appeler une autre base de données que celle actuellement utilisée.
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 15:57
par polux78
Oui Ryle
C'est ce que je précise dans mon point No 4, sauf qu'après je n'ai plus rien
Si j'exécute la requête suivante
// connexion à la base Conserves
// mysql_connect($host,$user,$pass) or die ("Impossible de se connecter à MySQL");
$link = mysqli_connect($host,$user,$pass,$db) or die ("Impossible de se connecter à MySQL");
/* Retourne le nom de la base de données courante */
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
$row = mysqli_fetch_row($result);
printf("La base de données courante est %s.\n", $row[0]);
mysqli_free_result($result);
}
// sélection de la base => viré les lignes suivantes :
// mysql_select_db($db) or die('Erreur de selection '.mysql_error());
// mysqli_select_db($link) or die('Erreur de selection '.mysql_error());
// $db_select = mysqli_select_db($link,paul);
// if (!$db_select) {
// die("Database selection failed: " . mysqli_error());
//}
Le résultat est
La base de données courante est paul.
Il y a eu un problème avec votre requête
No database selected
Je ne sais pas comment faire poursuivre la requête après $link.
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 18:26
par Ryle
Je ne comprends pas bien à quoi correspondent les messages affichés... A quoi fait référence le message "Il y a eu un problème avec votre requête" ?
Ta connexion à la base de données est réalisée avec mysqli_connect, tu testes celle-ci en exécutant une requête SQL sur ta base de données, qui te renvoi le résultat attendu (le nom de la base). Du coup jusqu'au mysqli_free_result, tout semble correct.
Le problème aurait donc lieu au niveau de l'update et pas avant ? peux-tu dans ce cas nous montrer le code relatif à l'update, la requête, l'exécution, ...

Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 20:52
par polux78
Bonsoir Ryle
J'ai enlevé des datas en trop !
// on écrit la requête sql
$query_string = "UPDATE conserves SET d_new='$d_new', d_modif='$d_modif', type='$type'
WHERE id='$id' ";
// on insère les informations de la fiche dans la table
// l'erreur est peut être là, mais je ne suis pas sur d'écrire correctement ces lignes avec mysqli !
$query=mysql_query($query_string);
//On donne le résultat à l'utilisateur
$date = date("d-M-Y");
if ($query)
{
echo "<p align='center'><br><br><br><br><br><br><br> <font size='4'>
La fiche No <b>$id</b> intitulée<br><br><b>$type</b> de <b>$nature</b>
<br><br><b>$objet_1</b> et <b>$objet_2</b><br><br>
a bien été modifiée ce $date.</font></p>";
}
else
{
echo "<p>Il y a eu un problème avec votre requête</p>";
echo "<p>" . mysql_error() . "</p>";
}
?>
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 04 nov. 2015, 23:41
par polux78
Hello Ryle
Pour préciser ta demande sur les messages retournés :
Le premier message " La base de données courante est paul."
vient du retour d'information
printf("La base de données courante est %s.\n", $row[0]);
Le deuxième message vient de la ligne echo "il y a eu un problème..." voir plus bas à =>:
//On donne le résultat à l'utilisateur
$date = date("d-M-Y");
if ($query)
{
echo "<p align='center'>
La fiche No <b>$id</b> intitulée<br><br><b>$type</b> de <b>$nature</b>
<br><b>$objet_1</b> <b>$objet_2</b><br><br>
a bien été modifiée ce $date.</font></p>";
}
else
{
=> echo "<p>Il y a eu un problème avec votre requête</p>";
Le troisième message :
No database selectedblème
Vient de
// $db_select = mysqli_select_db($link,paul);
// if (!$db_select) {
// die("Database selection failed: " . mysqli_error());
Pour conclure
Je suis surpris que les internautes en herbe comme moi ne soient pas stressés pour passer de PHP 5.4 à PHP 5.6
S'ils sont chez Free, pas de problème : Free est encore sous PHP 5.3
Le jour ou Free va basculer... il va y avoir des dommages collatéraux graves !!!
Chez OVH (un pro de chez pro) il y a déjà l'info que c'est PHP 5.6 qui devient la référence
C'est pour cette raison que "je rame" pour passer mes fichiers en PHP 5.6
Pour l'instant j'emmagasine les réponses sur mes problèmes d'éléphanteau pour basculer de PHP 5.4 à 5.6
J'avoue que je souffre !!!, mais les ténors de la professions sont là...
Je proposerai une synthèse aux ténors de ce site et oh combien bénévoles et dévoués sur les fonctions de base qui stressent les fourmis que nous sommes.
Amicalement
Polux78
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 05 nov. 2015, 18:28
par polux78
Bonjour Ryle
Après parcours de la doc php, j'ai écris la ligne suivante
$query=mysqli_query($db,$query_string);
Cependant, j'ai toujours mon message d'erreur: "Il y a eu un problème avec votre requête"
Voir plus bas
Quel est ton avis ?
Cord.
Polux78
CODE
// on écrit la requête sql
$query_string = "UPDATE conserves SET d_new='$d_new', d_modif='$d_modif', type='$type', nature='$nature', objet_1='$objet_1', objet_2='$objet_2', provenance='$provenance', rangement='$rangement' WHERE id='$id' ";
// on insère les informations modifiées de la fiche Nro 'id' dans la table
$query=mysqli_query($db,$query_string);
//On retourne le résultat à l'utilisateur
$date = date("d-M-Y");
if ($query)
{
echo "<p align='center'><br> <font size='4'>
La fiche No <b>$id</b> intitulée<br><b>$type</b> de <b>$nature</b>
<br><b>$objet_1</b> et <b>$objet_2</b><br><br>
a bien été modifiée ce $date.</font></p>";
}
else
{
echo "<p>Il y a eu un problème avec votre requête</p>";
echo "<p>" . mysql_error() . "</p>";
}
?>
Re: PHP 5.5.8 - mysqli & UPDATE table
Posté : 06 nov. 2015, 17:26
par polux78
Bonjour
Je ne sais pas si mon code est parfait, mais cela fonctionne !
<?php
include ("pass/paul.inc.php"); // valid
ini_set('display_errors', '1');
// écupération data transféré
if(isset($_POST['rangement'])) $rangement= $_POST['rangement'];
else $rangement="";
// connexion à la base Conserves
$link = mysqli_connect($host,$user,$pass,$db) or die ("Impossible de se connecter à MySQL");
// Retourne le nom de la base de données courante
if ($result = mysqli_query($link, "SELECT DATABASE()")) {
$row = mysqli_fetch_row($result);
printf("La base de données courante est<font color='red'> %s</font>.\n", $row[0]);
}
// on écrit la requête sql
$query_string = "UPDATE conserves SET, rangement='$rangement' WHERE id='$id' ";
// on insère les informations modifiées de la fiche Nro 'id' dans la table
$query=mysqli_query($link, $query_string);
//On retourne le résultat à l'utilisateur
$date = date("d-M-Y");
if ($query)
{
echo "<p align='center'><br> <font size='4'>
La fiche No <b>$id</b> intitulée<br><b>$type</b> de <b>$nature</b>
<br><b>$objet_1</b> et <b>$objet_2</b><br><br> a bien été modifiée ce $date.</font></p>";
}
else
{
echo "<p>Il y a eu un problème avec votre requête</p>";
echo "<p>" . mysql_error() . "</p>";
}
?>
Cord.
Polux78