PHP与SQl的PDO连接以及关于dbtojson和csv文件数据的读取

本文展示了如何使用PHP的PDO扩展连接MySQL数据库,执行SQL查询以读取和写入数据。同时,文中还涵盖了将数据转换为JSON和CSV格式,并进行反向导入的步骤。
摘要由CSDN通过智能技术生成

参考:菜鸟教程

在连接数据库时只连接数据库,具体操作的表及其他的细节是在sql命令中告诉电脑的。我今天下午犯傻了。

与数据库的连接:

$dbms='mysql';     //数据库类型
$host='localhost'; //数据库主机名
$dbName='test';    //使用的数据库
$user='root';      //数据库连接用户名
$pass='';          //对应的密码
$dsn="$dbms:host=$host;dbname=$dbName";

$pdo = new PDO($dsn, $user, $pass);

数据的读取:

$sql='Select * from week7';//存储sql命令
$statement=$pdo->query($sql);//query执行 SQL 语句,返回PDOStatement对象

//为语句设置默认的获取模式,不加的话会出现一些十分奇怪的结果
$statement->setFetchMode(PDO::FETCH_ASSOC);

$records=$statement->fetchAll();//返回一个包含结果集中所有行的数组

foreach ($records as $row) {//一行一行的打印
    echo $row['name'].", ".$row['email'].", ".$row['address'].", ".$row['phonenumber'],"<br>";
}

添加数据:

$values=['c','165579@qq.com','1429','6168'];


//prepare:准备要执行的SQL语句并返回一个 PDOStatement 对象
$sql="insert into week7 (name,email,address,phonenumber) value(:name,:email,:address,:phonenumber)";

$statement=$pdo->prepare($sql);
      
//bindParam:绑定一个参数到指定的变量名
$statement->bindParam(":name", $values[0]);
$statement->bindParam(":email", $values[1]);
$statement->bindParam(":address", $values[2]);
$statement->bindParam(":phonenumber", $values[3]);
$sucess=$statement->execute(); //执行一条绑定变量的预处理语句
    

Json文件:

从数据库里读取数据:

$sql='Select * from week7';//存储sql命令


$statement=$pdo->query($sql);//query执行 SQL 语句,返回PDOStatement对象



$records=$statement->fetchAll(PDO::FETCH_ASSOC);


$json_data= json_encode($records);//将读到的数据转换为数组
$f1=fopen("dbtojson.json","w");//以只写方式打开文件(“dbtojson.json”是文件名)
fwrite($f1, $json_data);
fclose($f1);//关闭文件

将json文件里的数据存入数据库:


$f3=fopen("jsontodb.json", "r");
$content= fread($f3, filesize("jsontodb.json"));
fclose($f3);
$json_data=json_decode($content,true);//返回数组

$sql="insert into week7 (name,email,address,phonenumber) values(?,?,?,?)";//sql语句,括号里的是表头
$statement=$pdo->prepare($sql);
      

foreach ($json_data as $data)
{
    $statement->execute([$data['name'],$data['email'],$data['address'],$data['phonenumber']]);//使用一个含有插入值的数组执行一条预处理语句(命名参数)
}

csv:

从数据库里读取数据:

$sql='Select * from week7';//存储sql命令
$statement=$pdo->query($sql);//query执行 SQL 语句,返回PDOStatement对象


$records=$statement->fetchAll(PDO::FETCH_ASSOC);

$f2=fopen("bdtocsv.csv","w");
foreach ($records as $data)
{
    fputcsv($f2, $data);
}
fclose($f2);

将csv文件里的数据存入数据库:

$f3=fopen("csvtodb.cs", "r");

$sql="insert into week7 (name,email,address,phonenumber) values(:name,:email,:address,:phonenumber)";
$statement=$pdo->prepare($sql);
echo '';
while(true)
{
    $data=array();
    $data=fgetcsv($f3);//一行一行的读取数据
    if($data[0]==null) break;//完成读取,跳出循环

    $statement->bindParam(":name", $data[0]);
    $statement->bindParam(":email", $data[1]);
    $statement->bindParam(":address", $data[2]);
    $statement->bindParam(":phonenumber", $data[3]);
    $statement->execute();
}
fclose($f3);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值