Bonsoir,
mon INSERT INTO ne fonctionne pas, je n'ai pas de message d'erreur, j'arrive a avoir les infos mais ne remonte pas dans la BDD.
Voici mon model:
public function import($file){
$bdd = new DatabaseConnector('projet6','localhost', 'root','root');
$file = fopen($file, 'r');
while ($row = fgetcsv($file)){
$value = "'".implode("','", $row)."'";
$req = $bdd->getDb()->prepare("
INSERT INTO csv
(manufacturer_code,title,content,writer,image,date_post,posted,menus_id,delivery,price,brand,deadlines,link_shop,availability,guarantee)
VALUES(". $value .")
");
$req->execute(array($value));
var_dump($value);
}
}
mon controller:
$csv = new Csv();
if (isset($_POST['upload'])){
$csv->import($_FILES['file']['tmp_name']);
var_dump($_FILES['file']);
}
le resultat de mon var_dump($value); :
''C-C-ZOLUX','collier chien','Collier cuire pour gros chien','nicolas.staffent@gmail.com','https://www.wanimo.com/images/collier_laisse_et_harnais/A/SB/ASBOB83/700x700/01/collier-california.jpg','','1','1','2.50','10.99','https://www.wanimo.com/fr/chiens/collier-laisse-et-harnais-sc91/','1 an'' (length=293)
Je ne réussi pas a faire remonter les données a la BDD.
Merci d'avance...
Tu peux nous remettre le code modifier ?
Ajoute ce code en l'adaptant
$arr = $req->execute(array(.......);
if (!$arr) {
print_r($bdd->errorInfo());
}
Moi je vois surtout que tu fais une requête préparé qui n'est pas cencé contenir les valeurs et ensuite tu executes la requête en lui passant des valeurs qui non aucune correspondantes dans la requête....
Hello, une requête préparer ne se compose pas de la sorte, il te manque les valeurs externes (marqueurs).
INSERTO INTO table VALUE (?,?,?) ou INSERT INTO table (:mais,:ou,:est) avec l'execute (array('mais'=>$value,"ou"=>$value1,"est"=>$value2)
Regarde de ce coté.
Peace
Merci DycENoman et Carouge10, Je suis debutant vous l'aurez surement compris.
voici les modifs:
$file = fopen($file, 'r');
while ($row = fgetcsv($file)){
$value = "'".implode("','", $row)."'";
$req = $bdd->getDb()->prepare("
INSERT INTO csv
(manufacturer_code,title,content,writer,image,date_post,posted,menus_id,delivery,price,brand,deadlines,link_shop,availability,guarantee)
VALUES(:manufacturer_code,:title,:content,:writer,:image,NOW(),:posted,:menus_id,:delivery,:price,:brand,:deadlines,:link_shop,:availability,:guarantee)
") or die(print_r($bdd->errorInfo()));
$req->execute(array(
':manufacturer_code' => $value[0],
':title' => $value[1],
':content' => $value[2],
':writer' => $value[3],
':image' => $value[4],
':date_post' => $value[5],
':posted' => $value[6],
':menus_id' => $value[7],
':delivery' => $value[8],
':price' => $value[9],
':brand' => $value[10],
':deadlines' => $value[11],
':link_shop' => $value[12],
':availability' => $value[13],
':guarantee' => $value[14]
));
var_dump($value);
}
le message d'erreur ;
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens
Il faut surement faire correspondre chaque $value a un champ du csv mais comment ?
Regarde tu as 15 paramètres à renseigner en tout.
Or toi dans ton prépare tu renseigne déjà "date_post"
Donc si tu le renseignes à nouveau dans ton executes, tu as une surcharge et une erreur car ":date_post" n'existe pas dans ta requête préparé.
en faite je suis revenu sur le precedent mais en changeant la variable $value par $row je pense que mon fichier csv a un souci je regarde ca et reomonte l'info en espérant trouver sinon voici le test que j'ai essayé :
$bdd = new DatabaseConnector('projet6','localhost', 'root','root');
$file = fopen($file, 'r');
while ($row = fgetcsv($file)){
$value = "'".implode("','", $row)."'";
$manufacturer_code = $row[1];
$title = $row[2];
$content = $row[3];
$writer = $row[4];
$image = $row[5];
//$date_post = $value[6];
$posted = $row[7];
$menus_id = $row[8];
$delivery = $row[9];
$price = $row[10];
$brand = $row[11];
$deadlines = $row[12];
$link_shop = $row[13];
$availability = $row[14];
$guarantee = $row[15];
$req = $bdd->getDb()->prepare("
INSERT INTO csv
(manufacturer_code, title, content, writer, image, date_post, posted, menus_id, delivery, price, brand, deadlines, link_shop, availability, guarantee)
VALUE ($manufacturer_code,$title,$content,$writer,$image, NOW(),$posted,$menus_id,$delivery,$price,$brand,$deadlines,$link_shop,$availability,$guarantee)
");
Un grand MERCI a Carouge10 et DyceNoman. Je suis pressé d'avoir votre niveau.
C'est bon j'avais bien une erreur avec mon fichier csv aussi.
MERCI et bon WE
Avec plaisir.
Si tu dévelloppes en local, tu as les logs de dispo sous wamp, xamp, mamp....
Sinon, il faut débugguer ligne la ligne.
Après quand tu as le message d'erreur, cela aide grandement.
Malheureusement j'ai encore besoin d'aide malgré Xdebug... ce n'est que mon 2eme projet en tant qu'etudiant et a 47 ans