Ma requête sql ne ramène rien

Résolu/Fermé
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015 - 29 janv. 2014 à 15:29
 Utilisateur anonyme - 29 janv. 2014 à 22:39
Bonjour,
Je suis en train de développer un site web avec php et MySQL. J'ai déjà fini la conception de la base de données et rempli celle ci grâce à phpMyadmin . Seulement dans mon code les requêtes sql ne ramènent aucune information.
La fonction mysqli_query() échoue à chaque fois.
Alors que le code arrive à se connecter au serveur et à la base de données correctement.
A l'aide s'il vous plait!! c'est la galère depuis plusieurs jours :)

10 réponses

Utilisateur anonyme
29 janv. 2014 à 17:59
global $link = mysqli_connect($host, $user,$passwd);
Je ne pense pas (je ne suis pas sûr non plus) qu'on puisse à la fois déclarer une variable globale et l'initialiser.
Il faut faire les deux séparément;
global $link;
$link = mysqli_connect($host, $user,$passwd);

et il est absolument certain qu'il faut global $link dans toutes les fonctions qui l'utilisent
1
Utilisateur anonyme
29 janv. 2014 à 15:35
Bonjour

Nous ne sommes pas devins.
Pour te répondre, il faut que tu donnes le message d'erreur exact que tu as, et la partie de code correspondant.
0
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015
29 janv. 2014 à 15:45
Merci de votre réponse.
En fait dans mon code j'ai deux fonctions qui sont responsables de l'extraction des donnees de ma base.Les voici:

function requete_SQL($strSQL) {
//$result = mysql_query($strSQL);
$result = mysqli_query($strSQL);
if (!$result) {
$message = 'Echec de la récupération des donnees..';
die($message);
}
return $result;
}

function extraction_infos_DB() {
$strSQL = 'SELECT * FROM 'pages' WHERE 'Id_page' = '.$_ENV['id_page'];
$resultat = requete_SQL($strSQL);
//$tabl_result = mysql_fetch_array($resultat);
$tabl_result = mysqli_fetch_array($resultat);
}

Le blème c'est que la fonction mysqli_query($strSQL) tombe toujours sur le message d'erreur. Je vous remercie d'avance pour vos idéees.
0
Utilisateur anonyme
29 janv. 2014 à 15:59
Essaye
$result = mysqli_query($strSQL) or die (mysqli_error());

Ça ne va pas régler le problème, mais ça va nous donner des précisions sur la cause réelle de l'erreur
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015
29 janv. 2014 à 16:09
La fonction mysqli_error() n'affiche rien j'ai trouvé cela un peu surprenant aussi.
Aucune information sur le type d'erreur.
Merci encore pour d'autres tentatives.
0
Ce n'est pas un peu surprenant, ça l'est beaucoup. Je dirais même impossible.
Tu dis bien que ça affiche 'Echec de la récupération des donnees' sans afficher le message de mysqli_error() ?
Peux-tu me montrer ton code modifié avec mon instruction ?
0
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015
29 janv. 2014 à 16:33
Voici comment j'ai modifié le code avec votre instruction:

function requete_SQL($strSQL) { 
$result = mysqli_query($strSQL);
if (!$result) {
die (mysqli_error());
}
return $result;
}

Et là l'exécution de la fonction n'affiche rien.
Merci encore
0
Je me suis fait piéger par mysqli dont je n'ai pas l'habitude (j'utilise PDO)
Les fonctions mysqli en mode prcédural demandent l'utilisation du paramètre de connexion (celui fourni par mysqli_connect). Pour pouvoir l'utiliser, il faut qu'il soit global.
function requete_SQL($strSQL) { 
global $lnk; // ça dépend de la variable que tu as utilisée pour mysqli_connect)
//$result = mysql_query($strSQL); 
$result = mysqli_query($lnk,$strSQL) or die (mysqli_error($lnk));
if (!$result) { 
$message = 'Echec de la récupération des donnees..'; 
die($message); 
} 
return $result; 
} 


Si tu fais ton $lnk=mysqli_connect... à l'intérieur d'une fonction, n'oublie pas de mettre global $lnk aussi dans cette fonction.

Je pense aussi que tu vas être amené à modifier ton mysqli_fetch_array, mais ça, ce sera plus tard.
0
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015
29 janv. 2014 à 17:30
voici comment j'avais défini la fonction $link dans mon code et elle marche correctement ou du moins pour la fonction de connexion:

function connexion_DB($name_DB) {
// Déclaration des paramètres de connexion
$host = "localhost";
$user = "root";
$bdd = $name_DB;
$passwd = "admin";

global $link = mysqli_connect($host, $user,$passwd);
if(!$link){
echo "Erreur de connexion au serveur";
}
mysqli_select_db($link, $bdd);
}

Voici comment j'ai utilisé cette variable dans les deux autres fonctions:

function requete_SQL($strSQL) { 
global $link;
$result = mysqli_query($link, $strSQL);
 if (!$result) { 
    die (mysqli_error($link));
} 
return $result; 
} 


function extraction_infos_DB() {
	$strSQL = 'SELECT * FROM 'pages' WHERE 'Id_page' = '.$_ENV['id_page'];
	$resultat = requete_SQL($strSQL);
	$tabl_result = mysqli_fetch_array($resultat);
}


Je vous donne tout le code pour que vous m'aidiez à voir là ou ca bloque parce que ça ne marche toujours pas. En définissant $link comme globale dans la premiere fonction ai je vraiment besoin de la déclarer encore dans les autres. J'ai essayé sans nouvelle déclaration mais là aussi ca ne passe pas.
Merci de votre aide encore :)
0
S@wrou Messages postés 8 Date d'inscription mercredi 29 janvier 2014 Statut Membre Dernière intervention 22 avril 2015
29 janv. 2014 à 18:06
Rien que cette petite modification et tout marche comme sur des roulettes!!
Vous êtes le meilleur!!
Merci infiniment pour votre aide :)
0
Utilisateur anonyme
29 janv. 2014 à 22:39
de rien :-)
0