2017-07-30 1 views
0

Ich versuche, die Werte der CSV-Datei in einer Datenbank zu speichern, also habe ich den folgenden Code geschrieben, damit die Werte darin gespeichert werden können, aber es wird kein Fehler zurückgegeben, während ich bin den Code aber die Werte in der Datenbank ausgeführt werden, nicht nach dem Ausführen esDie Werte können nicht in der Datenbank gespeichert werden

<?php 
include('work/connection.php'); 
$file = fopen("12.csv","r"); 
while(!feof($file)) 
{ 
$name = fgets($file); 
$array[] = explode(",",$name); 
} 
foreach($array as $i){ 
$query = $connection->prepare("UPDATE mark SET maths = :maths AND science = 
:science AND social = :social where stuid = :stuid"); 
$query->bindParam(":maths",$i[2]); 
$query->bindParam(":science",$i[3]); 
$query->bindParam(":social",$i[4]); 
$query->bindParam(":stuid",$i[1]); 
$query->execute(); 
} 
?> 

und den Code in connection.php immer aktualisiert ist

<?php 
try{ 
$connection = new PDO('mysql:host=localhost;dbname=student;charset=utf8mb4', 
'root', ''); 
$connection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
}catch(PDOException $err){ 
echo $err->getMessage(); 
die(); 
} 
?> 

meine 12.csv Datei Widder der Brache besteht 6raman32 12 34 45 manoj 6raman 33 13 55 23 Die obigen sind die beiden Komponenten in meiner CSV-Datei danke Ich denke, die Werte in meiner Datenbank sind in Form von Varchar aber hier im Array als Zeichenfolge gespeichert, aufgrund der keine Zeile aktualisiert wie keine stuid ist passend zu dem der Array-Einsen Ich habe versucht, die Elemente von ihm Int mit intval zu konvertieren, aber es gibt 0 statt String in int-Form zurück

+0

werden Sie Ihre CSV-Datei zeigen? –

+0

Ich kann nicht die Datei anzeigen, aber die oben genannten sind die Komponenten, die in 12.csv Datei getrennt sind –

+0

ändern Sie die Abfrage zu UPDATE Marke SET maths =: Mathematik, Wissenschaft = : Wissenschaft, soziale =: soziale wo stuid =: stuid ' –

Antwort

0

Wahrscheinlich ist Ihre Syntax falsch. Verwenden Sie im Set-Abschnitt ein Komma anstelle von 'und'.

+0

benutze Ich versuchte sogar nur eine Zeile Mathematik aktualisieren durch Entfernen aller anderen, aber es hat nicht gearbeitet –

+0

Sind Sie sicher, dass Ihr Array nicht leer ist? – Vladislav

+0

Und definieren Sie das $ -Array vor Ihrer while-Schleife mit einem Standardwert von []. – Vladislav

0

die obige Antwort, die ich denke, ist nicht richtig, genau habe ich thees Änderungen, so dass die CSV-Datei in der Datenbank in die Tabellen aktualisiert wird immer

$file = fopen("12.csv","r"); 
while(!feof($file)){ 
$data = fgetcsv($file); 
$query = $connection->prepare("UPDATE mark SET maths = :maths , science = 
:science , social = :social where stuid = :stuid"); 
$query->bindParam(":maths",$data[2]); 
$query->bindParam(":stuid",$data[1]); 
$query->bindParam(":science",$data[3]); 
$query->bindParam(":social",$data[4]); 
$query->execute(); 
} 
fclose($file) 
Verwandte Themen