Notice: Array to string conversion in ...Database.php on line 18

Résolu/Fermé
Signaler
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016
-
 DevMan -
Salut à tous ^^ , je viens vers vous car je me bloque sur un problème que j'ai du mal à identifier , c'est la première fois que je rencontre ce type d'erreur.
lorsque j'utilise ma requête j'ai bien le bon résultat mais j'ai un retour de notice concernant la conversion de tableau.
Si quelqu'un a une idée afin de régler cela sans cacher l'erreur cela me permettrait d'avancer dans mon travail.
je vous montre le code avec toutes les lignes qui sont apparues dans la notice :
CLASS Database.php qui contient la fonction de ma query :
 public function query($query, $params = false){ 
		try { if($params){
			$req = $this->bdd->prepare($query); 
			$req->execute($params); // c'est la ligne 18
	}else{
		$req = $this->bdd->query($query);
	}
		return $req;} catch(Exception $e) { 
			echo 'Exception -> ';
			var_dump($e->getMessage());
		}
		


ma page mailCtrl.php je vous montre juste les lignes qui concernent la requête
if($validator->isValid()){
    App::getAuth()->estimate($db, $_POST['qtePdt'],$_POST['namePdt'],$_POST['refPdt'], $_POST['suggestedPrice'], $_POST['message'], $_FILES['fileUpload']);
      Session::getInstance()->setFlash('success', "Votre demande a ete bien envoyée");


ma class Auth.php ou se trouve la function estimate de la requete :
 public function estimate($db, $qtePdt, $namePdt, $refPdt, $suggestedPrice, $message, $fileUpload){
            $db->query("INSERT INTO estimate SET qtePdt = ?, namePdt = ?, refPdt = ?, suggestedPrice = ?, message = ?, fileUpload = ?",[
                $qtePdt,
                $namePdt, 
                $refPdt, 
                $suggestedPrice, 
                $message, 
                $fileUpload
                ]); // on m'indique aussi que l'erreur vient de cette ligne 
        }


Merci d'avnce pour votre aide, je serai très reconnaissante ^^

3 réponses

Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
Bonjour,

Sans regarder ton code, cette erreur signifie que tu essaye d'utiliser un tableau dans un objet/fonction qui attends une string, et cette utilisation erronée se trouve à la ligne 18 de ton fichier database.php, et comme tu ne nous fournis pas le code de cette ligne 18 ^^ dur d'en dire plus.

Cdlt.
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016
>
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016

ah , et je mets quoi dans le fichier debug.txt
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
tu ne met rien, il va se remplir tout seul avec le type de la variable $params, celà te permettra de savoir si cette variable est bien un array.
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016

oui c'est un array donc quoi faire pour l'erreur ? ^^
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
Tu peux copier coller l'erreur en entier ? parce que la avec le message que tu donnes, si c'est bien un array il ne devrait pas y avoir d'erreur, a moins que cet array ne contiennent pas de clé associées aux valeurs, ce qui peut-être problématique dans ton cas.
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016

( ! ) Notice: Array to string conversion in C:\wamp\www\TOUPACKGROUP\class\Database.php on line 19
Call Stack
# Time Memory Function Location
1 0.0000 148864 {main}( ) ..\devis.php:0
2 0.0040 209864 require( 'C:\wamp\www\TOUPACKGROUP\mailCtrl.php' ) ..\devis.php:4
3 0.0190 246072 Auth->estimate( ) ..\mailCtrl.php:15
4 0.0200 246704 Database->query( ) ..\Auth.php:132
5 0.0200 247528 execute ( ) ..\Database.php:19


voila tout ce qui s'affiche dans l'erreur ><
et j'ai posté toute les lignes affichées dans l'erreur
Il ne faut tout simplement pas faire de "echo" sur un array...

Si tu as un tableau et que tu fais un echo sur celui ci, php ne saura pas quelle case du tableau t'afficher donc voila d'ou viens ton erreur.

Si tu veux afficher quelque chose en particulier tu devrais faire plutôt
du echo $nomDuTableau['case_du_tableau'];
Messages postés
216
Date d'inscription
lundi 2 décembre 2013
Statut
Membre
Dernière intervention
10 octobre 2016
21
où vois tu un echo d'un tableau dans son code ?
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016

Tu parles de quel echo là ?
C'etait le matin et j'ai pas regardé le code haha, Desolé :)
Messages postés
2625
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
7 décembre 2021
477
Salut,

L'erreur vient surement de la variable $_FILES['fileUpload'] qui est un tableau, il n'est donc pas possible de l'utiliser directement en tant que paramètre d'une requête préparée.

Bonne journée,
Messages postés
2625
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
7 décembre 2021
477
Il faut bien utiliser la variable $_FILES['fileUpload'] pour récupérer les informations du fichier uploadé, mais il faut extraire de ce tableau la chaine que tu souhaite insérer en base de donnée, le nom du fichier par exemple.
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016

ah je comprend ^^
et comment puis-je l'extraire ?
désolé si je demande trop de questionsmais je ne suis qu'une débutante en php
Messages postés
2625
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
7 décembre 2021
477
Tout dépend de l'info que tu veux récupérer :
$_FILES['fileUpload']['name'] pour le nom original du fichier
$_FILES['fileUpload']['tmp_name'] pour le nom temporaire du fichier
$_FILES['fileUpload']['size'] pour la taille du fichier
etc...
L'utilisation de la superglobale $_FILES est expliqué ici : https://www.php.net/manual/fr/features.file-upload.post-method.php

Au passage il faudra également utiliser la fonction move_uploaded_file() pour stocker le fichier uploadé temporaire dans le dossier de ton choix, sinon le fichier uploadé temporaire sera supprimé à la fin de l’exécution de ton script (plus d'info sur le lien de la doc ci-dessus).
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016
>
Messages postés
2625
Date d'inscription
lundi 11 février 2013
Statut
Membre
Dernière intervention
7 décembre 2021

voila :D problème resolu
merci infiniment
Messages postés
13
Date d'inscription
lundi 25 avril 2016
Statut
Membre
Dernière intervention
10 mai 2016

Merci pour l'info :D je vais voir la doc et essayer de fixer mon code ! je reviendrai vers vous si je me plante