Connection base avec mysqli

Résolu
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -  
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Sur mon site, j'ai un fichier "connexion" qui me permet de me connecter à ma base de données. Et comme maintenant il faut utiliser mysqli, je n'arrive ^plus à me connecter.
Voici mon script de connexion :

<?
// information pour la connection à la DB $host;
$host = '...........';
$user = '...........';
$pass = '...........';
$db = '...........';

$link = mysqli_connect ($host,$user,$pass) or die ('Erreur : '.mysqli_error() );
mysqli_select_db($db, $link) or die ('Erreur :'.mysqli_error());

?>

Et avec ceci, j'ai ce message d'erreur :

Warning: mysqli_select_db() expects parameter 1 to be mysqli, string given in /home/.............../public_html/connexion/connexion.php on line 9

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/............../public_html/connexion/connexion.php on line 9

La ligne 9 correspond à : mysqli_select_db

Merci de votre aide.
A voir également:

8 réponses

Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
Salut,

Ton message d'erreur est assez explicite, mysqli.select-db attend un object mysqli en premier paramètre et tu lui donnes une chaine.
Tout est dans la doc :
https://www.php.net/manual/en/mysqli.select-db.php

Il faut inverser tes deux paramètres.

Si tu n'utilises qu'une seule db, tu peux aussi la passer en paramètres de ton connect:
mysqli_connect ($host,$user,$pass,$db) ...
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Je n'ai qu'une base de données, donc c'est ok pour ça :
$link = mysqli_connect ($host,$user,$pass,$db) or die ('Erreur : '.mysqli_error() );
mysqli_select_db($link) or die ('Erreur :'.mysqli_error());


Mais je ne comprends pas pour le reste !?
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
Le reste ?
pour mysqli_select_db; tu utilisais les paramètres à l'envers:
mysqli_select_db($db, $link)

au lieu de
mysqli_select_db($link, $db)

Mais tu n'en as plus besoin si tu sélectionnes la bdd dans mysqli_connect.
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Ouais ! Mais j'ai toujours mon erreur :

Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in /home/u251224104/public_html/connexion/connexion.php on line 9

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/u251224104/public_html/connexion/connexion.php on line 9
Erreur :
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
Comme je l'ai marqué juste au dessus, tu n'as pas besoin de faire de mysqli_select_db vu que tu as sélectionné la bdd dans mysqli_connect.

Si tu voulais utiliser mysqli_select_db en mode procédurale il faudrait faire
mysqli_select_db($link, $db)


Mais je me répète ...
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Mais j'ai toujours le message d'erreur ...............
Et si j'ouvre une pagge associée à la connesion :
<?php   include ('../connexion/connexion.php'); 

$requete="SELECT texte_FR,lien_photo,largeur FROM bienvenue"; 
$result = mysqli_query($requete,$link) or exit ('Erreur : '.mysqli_error() ); 
$row = mysql_fetch_array($result);


J'ai le même genre de message d'erreur :

Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /home/u251224104/public_html/FR/bienvenue_FR.php on line 11

Warning: mysqli_error() expects exactly 1 parameter, 0 given in /home/u251224104/public_html/FR/bienvenue_FR.php on line 11
Erreur :

La ligne 11 est le $result.
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
C'est la même erreur et donc le même problème : tes paramètres sont inversés dans mysqli_query.

Comme tu peux le voir dans la doc https://www.php.net/manual/en/mysqli.query.php
Le link va en premier, la requête en 2d.

Sur la ligne d'après pense à utiliser mysqli_fetch_array
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
et ton mysqli_error doit aussi recevoir ton $link en paramètre.
https://www.php.net/manual/en/mysqli.error.php
0

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

Posez votre question
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Bonjour,

En complément des réponses de Firoxyd ( qui sont "parfaites" ^^ ) .. je rajouterai qu'il te suffit de regarder les exemples donnés sur le site de php !

par exemple :

<?php
$host = "localhost";
$user = "my_user";
$password =  "my_password";
$bdd = "world";

$link = mysqli_connect($host, $user,$password , $bdd );

/* Vérification de la connexion */
if (mysqli_connect_errno()) {
    printf("Échec de la connexion : %s\n", mysqli_connect_error());
    exit();
}

// requête :
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";

if ($result = mysqli_query($link, $query)) {

    /* Récupère un tableau associatif */
    while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
        printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
    }

    /* Libération des résultats */
    mysqli_free_result($result);
}else{
//Affichage de l'erreur :
 printf("Errormessage: %s\n", mysqli_error($link));
}

/* Fermeture de la connexion */
mysqli_close($link);
?>





Cordialement,
Jordane
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
OK !
C'est bon pour les pages ............. :D

Merciiiiiiiiiiiii
A ++
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

Cordialement,
Jordane
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Encore une question ..................
A la fin de mes scripts, je mets
mysqli_free_result($result);
mysqli_close();
exit;
?>

et j'ai l'erreur :
Warning: mysqli_close() expects exactly 1 parameter, 0 given in ...........
qui correspond à la ligne mysqli_close.
Cette ligne est-elle en trop ???
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 753
 
Te suffit de lire mon exemple !!
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
Ou le message d'erreur et le manuel ...
Ou ma réponse sur le mysql_error : c'est la même chose avec le même message d'erreur
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11
 
Ah ben oui .............. ;)

Encore une question :
pour calculer le nombre d'enregistrement dans la table, je faisais :
$nb_id = "SELECT COUNT(DISTINCT id) AS compteur FROM europe";
$result = mysql_query($link,$nb_id) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
echo $total;


Maintenant, si j'écris :
$nb_id = "SELECT COUNT(DISTINCT id) AS compteur FROM europe";
$result = mysqli_query($link,$nb_id) or die ('Erreur : '.mysqli_error($link) );
$total = mysqli_num_rows($result);
echo $total;

Je n'ai pas le bon résultat ! J'obtiens 1, alors qu'il y en a une vingtaine ! ?
0
Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention   45
 
Ça devait déjà être faux avant.
mysqli_num_rows compte le nombre de lignes de résultat retourné par la requête (avec le count ça sera toujours 1).
Ici tu as besoin de lire le résultat de ta requête count. Il faut faire un fetch, par exemple un fetch_row et prendre la première colonne.
$row = fetch_row($result);
$total = $row[0];

(non testé)
0
t671 Messages postés 1476 Date d'inscription   Statut Membre Dernière intervention   11 > Firoxyd Messages postés 98 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour tout !!!! C'est ok !
A ++
0