参考:菜鸟教程
在连接数据库时只连接数据库,具体操作的表及其他的细节是在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);