我正在尝试将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中的代码是
<?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.csv文件包括以下内容 ram 6raman32 12 34 45 manoj 6raman33 13 55 23 以上是我的csv文件中的两个组件 谢谢 我认为我的数据库中的值以varchar的形式存储,但在数组中作为字符串存在,因为没有任何行得到更新,因为没有stuid与数组的那些匹配我尝试使用intval转换它的元素int但它返回0而不是int形式的字符串
答案 0 :(得分:0)
可能你的语法错了。 使用逗号而不是&#39;和&#39;在集合部分。
答案 1 :(得分: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)