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

Résolu
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
 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 ^^
A voir également:

3 réponses

Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   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.
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bah si je l'ai mis :/ c'est dans la function query
$req->execute($params); // c'est la ligne 18
0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
En effet ^^ pas regardé les commentaires .. pour moi c'était la ligne 4 ...
0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
Un conseil que je peux te donner pour tenter de résoudre ce problème, c'est d'ajouter juste avant
$req->execute($params);
, le code suivant :
file_put_contents('debug.txt', gettype($params));

puis tu édites le fichier debug.txt, si le fichier contient autre chose que array, ça te donnera une grosse information sur le problème.

Cdlt.
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention  
 
ah , et je mets quoi dans le fichier debug.txt
0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   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.
0
DevMan
 
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'];
0
Xavierdu34 Messages postés 216 Date d'inscription   Statut Membre Dernière intervention   21
 
où vois tu un echo d'un tableau dans son code ?
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Tu parles de quel echo là ?
0
DevMan
 
C'etait le matin et j'ai pas regardé le code haha, Desolé :)
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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,
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Mais je peux pas mettre un $_POST['fileUpload'] ce ne devrai pas marcher

merci pour votre aide btw ^^
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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.
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
Pitet Messages postés 2826 Date d'inscription   Statut Membre Dernière intervention   527
 
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).
0
JxSDev Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour l'info :D je vais voir la doc et essayer de fixer mon code ! je reviendrai vers vous si je me plante
0