2017-07-30 3 views
0

csvファイルの値をデータベースに保存しようとしていますので、値を保存できるように休止コードを書きましたが、エラーが返されませんコードを実行しているが、データベース内の値はデータベースに値を保存できません

<?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(); 
} 
?> 

それを実行した後に更新され、connection.phpのコードは私の12.csvファイルは休閑 ラム6raman32で構成されてい

<?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(); 
} 
?> 

で取得されていません12 34 45 manoj 6raman 33 13 55 23 上記は私のCSVファイル内の2つのコンポーネントです thankyou 私のデータベースの値はvarcharの形式で格納されていると思いますが、ここでは配列として文字列として格納されています。配列のものと一致するintの要素をint型に変換しようとしましたがint型の文字列の代わりに0を返します

+0

はあなたのcsvファイルを表示しますthees変更を行っ正しくないのですか? –

+0

ファイルを表示することはできませんが、上記は12.csvファイルでコンマで区切られたコンポーネントです –

+0

'UPDATE mark SET maths =:maths、science = :science、social =:social where stuid =:stuid ' –

答えて

0

おそらく構文が間違っています。 設定セクションで 'と'の代わりにカンマを使用します。

+0

他のすべてのものを削除して1つの行を更新してみましたが、 –

+0

配列が空ではないと確信していますか? – Vladislav

+0

whileループの前に$配列を定義し、デフォルト値の[]にします。 – Vladislav

0

私が思う以上の答えは、csvファイルは私のデータベースのテーブルに更新取得されるように、まさに私が

$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) 
関連する問題