Php

Signaler
Messages postés
15
Date d'inscription
mercredi 6 janvier 2021
Statut
Membre
Dernière intervention
23 mars 2021
-
Messages postés
4
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
31 mars 2021
-
Bonsoir....j'ai un petit difficulté sur cette erreur

Catchable fatal error: Object of class mysqli_result could not be converted to string in C:\UwAmp\www\S3\Examen Final S3 Tmart\functions.php on line 49

et voila mon code
<?php
    require("Connexion.php");

    function get_count_Admin($login1,$mdp1)
    {
        $sql="SELECT * FROM Administrateur WHERE login='%s' AND motdepasse='%s'";
        $sql=sprintf($sql,$login1,$mdp1);
        $result=mysqli_query(dbconnect(),$sql);
        $donnee_Enseignent=mysqli_fetch_assoc($result);
        $count_Enseignent=mysqli_num_rows($result);
        return $count_Enseignent;
    }

    function get_product()
    {
        $sql="SELECT * FROM Products";
        $sql=sprintf($sql);
        echo $sql;
        $produit=mysqli_query(dbconnect(), $sql );
        $result = array();
        while ($comment = mysqli_fetch_array($produit)) {
            $result[] = $comment;
        }
        mysqli_free_result($produit);
        return $result;
    }

    function supprimer($id)
    {
        $sql="DELETE FROM Products WHERE idProduct='%s'";
        $sql=sprintf($sql,$id);
        echo $sql;
        $result=mysqli_query(dbconnect(), $sql );
        return $result;
    }

    function modifier($image,$price,$nom,$qtt,$id)
    {
        $sql="UPDATE Products SET urlImage='%s', Price='%s', nameProduct='%s', quantityStock='%s' WHERE idProduct='%s'";
        $sql=sprintf($sql,$image,$price,$nom,$qtt,$id);
        echo $sql;
        $result=mysqli_query(dbconnect(), $sql );
        return $result;
    }

    function insert($name,$categorie,$img,$price,$qtt,$date)
    {
        $sql="INSERT INTO PRODUCTS (nameProduct,idCategories,urlImage,Price,quantityStock,dateProduct)  VALUES ('%s','%s','%s','%s','%s','%s')";
        $sql=sprintf($sql,$name,$categorie,$img,$price,$qtt,$date);
        echo $sql;
        $result=mysqli_query(dbconnect(), $sql);
        

    }


Merci d'avance de votre aide

2 réponses

Messages postés
4
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
31 mars 2021

bonjour,

voir ici l'utilisation de $result=mysqli_query(dbconnect(), $sql); ici :
https://www.w3schools.com/php/func_mysqli_query.asp

Description

Style orienté objet :

mixed mysqli::query( string $query[, int $resultmode = MYSQLI_STORE_RESULT] )


Style procédural :

mixed mysqli_query( mysqli $link, string $query[, int $resultmode = MYSQLI_STORE_RESULT] )



Opérateur de contexte de classe (::)
Opérateur de résolution de portée : ( :: ou -> )

d'où l'erreur PHP : Object of class mysqli_result could not be converted to string ...

Messages postés
4
Date d'inscription
samedi 5 septembre 2020
Statut
Membre
Dernière intervention
31 mars 2021

<?php                                                                                              // Connexion.php
 $ip    = "127.0.0.1" ;
 $user  = "root" ;
 $pass  = "" ;
 $bdd   = "STOCK" ;
 $table = "PRODUCTS" ;

function  dbconnect( )             
 {       // crée automatiquement la $bdd et la $table si elles n'existent pas ...
  global $ip , $user, $pass ;
  global $bdd ;
  global $table ;
 
  $con = @mysqli_connect( $ip, $user, $pass, $bdd );

  if (mysqli_connect_errno()) {
     //echo "Failed to connect to serveur MySQL: " . mysqli_connect_error();
     
     $con = mysqli_connect( $ip, $user, $pass, "mysql" );
     if (mysqli_connect_errno()) {
        echo "Failed to connect to Bdd mySQL : " . mysqli_connect_error();
        exit();                                   // on peut plus rien faire !!
  }
  $requeteSQLi = "CREATE DATABASE IF NOT EXISTS $bdd" ;
  $result = mysqli_query( $con, $requeteSQLi );
  mysqli_close( $con ) ;
  $con = mysqli_connect( $ip, $user, $pass, $bdd );
  if (mysqli_connect_errno()) {
        echo "Failed to connect to serveur MySQL: " . mysqli_connect_error();
        exit();
  }
  $requeteSQLi = "CREATE TABLE IF NOT EXISTS `$table` (
                    `nameProduct`    VARCHAR(15) ,
        `idCategories`   INT(11) ,
        `urlImage`       VARCHAR(35) ,
        `Price`          FLOAT ,
        `quantityStock`  INT(11) ,
        `dateProduct`    VARCHAR(20)
        )" ;
  $result=mysqli_query( $con, $requeteSQLi );
  if ( ! $result) {
        echo "Erreur creation Table MySQLi '$table ' : " . mysqli_error( $con);
        mysqli_close( $con ) ;
        exit();
  }
  }  

  return $con ;
 }
?>


<?php                                                                                          // functions.php
    require("Connexion.php");

    function insert($name,$categorie,$img,$price,$qtt,$date)
    {
        $sql="INSERT INTO PRODUCTS (nameProduct,idCategories,urlImage,Price,quantityStock,dateProduct)  VALUES ('%s','%s','%s','%s','%s','%s')";
        $sql=sprintf($sql,$name,$categorie,$img,$price,$qtt,$date);
        echo $sql;
        $conn = dbconnect() ;
        <ital>if ( mysqli_connect_errno() ) {
            echo "Ici, problème de connexion : " . mysqli_connect_error();
            exit();
 }</ital>
        $result = mysqli_query($conn, $sql);
     if ( ! $result) {
           echo "Erreur requeteSQLi INSERT sur Table MySQLi : " . mysqli_error( $conn) ;
           mysqli_close( $conn ) ;
           exit() ;
     }
    }
    
    // test fonction  insert() 
    $name      = "pochette" ;
 $categorie = 1234567 ;
 $img       = "http://127.0.0.1/img/pochette.png" ;
 $price     = 4.6 ;
 $qtt       = 61 ;
 $date      = "2021-03-30 23:07:57" ;
 
    insert($name,$categorie,$img,$price,$qtt,$date)
    
    ?>

- J'ai testé ici la fonction insert() sur 1 seule table PRODUCTS de la Bdd STOCK.
- Il faut gérer les erreurs (et aussi penser à fermer la connexion : mysqli_close( $con ) ;
quand il le faut ).
- quand dbconnect() plante il ne retourne pas une bonne valeur pour la fonction mysqli_query(), donc la valeur du 1ier argument dans la fonction mysqli_query( dbconnect() , $sql ); n'est alors pas correct !!