Ma requête sql ne ramène rien

Résolu
S@wrou Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
 Utilisateur anonyme -
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
 
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
 
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   Statut Membre Dernière intervention  
 
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
 
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   Statut Membre Dernière intervention  
 
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
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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
Utilisateur anonyme
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
Rien que cette petite modification et tout marche comme sur des roulettes!!
Vous êtes le meilleur!!
Merci infiniment pour votre aide :)
0
Utilisateur anonyme
 
de rien :-)
0