批改状态:未批改
老师批语:
<?php
// php连接sql,并有增删查改函数
// 数据库连接信息
// $dsn='mysql:host=localhost;dbname=cars;charset=utf8;port=3306';
// $user='root';
// $pass='root';
// $p=new PDO($dsn,$user,$pass);
// // 生成PDO类的一个对象p
// 1、sql连接的第一种方式,经过测试可以返回查询的结果
// $sql='SELECT * FROM `car` WHERE `id`=3 ';
// try {
// $p=new PDO($dsn,$user,$pass);
// foreach ($p->query($sql) as $value) {
// print_r($value);
// }
// } catch (PDOException $e) {
// echo $e->getMessage();
// }
//2.使用PDO->prepare-->PDOStatement类连接操作数据库
// $sql='SELECT * FROM `car`';
// $p=new PDO($dsn,$user,$pass);
// // 数据库语句执行预算
// $sth=$p->prepare($sql);
// $sth->execute();
// /* 运用 PDOStatement::fetch 风格 */
// //返回了第一条数组
// // PDO::FETCH_ASSOC:返回一个索引为结果集列名的数组,以‘索引’为下标的数组
// // print("PDO::FETCH_ASSOC: ");
// // print("Return next row as an array indexed by\n");
// // $result = $sth->fetch(PDO::FETCH_ASSOC);
// // print_r($result);
// // print("\n");
// $result=$sth->fetchAll(PDO::FETCH_ASSOC);
// print_r($result);
// print("\n");
// 3.使用预处理,并使用数据绑定查询数据库
// 数据库语句执行预算
// 对$sql这条语句进行处理,达到实现增删查改的功能
/**
* 数据库连接
* @param $db
* @return PDO
*/
function connect()
{
$db = array(
'charset' => 'utf8',
'port' => 3306,
'type' => 'mysql',
'host' => '127.0.0.1',
'user' => 'root',
'pass' => 'root',
'name' => 'cars'
);
$dsn = "{$db['type']}:host={$db['host']}; dbname={$db['name']}; charset={$db['charset']}; port={$db['port']}";//数据源
try {
//实例化PDO类,创建PDO对象
$pdo = new PDO($dsn,$db['user'],$db['pass']);
} catch (PDOException $e) {
die('数据库错误:'.$e->getMessage());
}
return $pdo;
}
/**
* 新增数据
* @param $db
* @param $table
* @param $value
* @return bool
*/
// 添加数据
function add($table,$value=[]){
$pdo = connect();
$sql= 'INSERT INTO {$table}} SET ';
// 判断要有value,并且不为空
if(is_array($value)){
foreach ($value as $k=>$v) {
$sql .= $k.'="'.$v.'", ';
}
}else{
return false;
}
unset($v);
//去掉尾部逗号,并添加分号结束
$sql = rtrim(trim($sql),',').';';
//创建PDO预处理对象
$stmt = $pdo->prepare($sql);
//执行新增操作
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
// 删除数据
function del($table,$where=''){
$pdo = connect();
if (isset($where)&&!empty($where)) {
$p=new PDO($dsn,$user,$pass);
$sql= 'DELETE FROM :t WHERE :w';
$sth=$p->prepare($sql);
$sth->bindValue(':t',$table,PDO::PARAM_STR);
$sth->bindValue(':w',$where,PDO::PARAM_STR);
}else{
die('数据库数据删除失败');
}
if($stmt->execute()){
if($stmt->rowCount()>0){
return true;
}
} else {
return false;
}
}
// 修改数据
function update($table,$data=[],$where=''){
if (isset($data)&&isset($where)&&!empty($data)&&!empty($where)) {
$pdo = connect();
$sql= 'UPDATE :t SET :s WHERE :w';
$sth=$p->prepare($sql);
$sth->bindValue(':t',$table,PDO::PARAM_STR);
$sth->bindValue(':s',$set,PDO::PARAM_STR);
$sth->bindValue(':w',$where,PDO::PARAM_STR);
}else{
die('数据库数据删除失败');
}
$sth = $pdo->prepare($sql);
//执行新增操作
if($sth->execute()){
if($sth->rowCount()>0){
return true;
}
} else {
return false;
}
}
// 查询数据
function select($table,$field='*',$where='',$asc='',$limit=''){
$pdo=connect();
$sql= 'SELECT '.$field.' FROM '.$table;
if (isset($where)&&!empty($where)) {
$sql.=' WHERE '.$where;
}
if (!empty($asc)) {
$sql.=' ORDER BY '.$asc;
}
if (!empty($limit)){
$sql.=' LIMIT '.$limit;
}
// echo $sql;
// exit;
$sth=$pdo->prepare($sql);
$sth->execute();
if($sth->execute()){
if($sth->rowCount()>0){
$sth->setFetchMode(PDO::FETCH_ASSOC);
return $sth->fetch();
}
} else {
return false;
}
}
$arr=select('car');
print_r($arr);
?>点击 "运行实例" 按钮查看在线实例
心得体会:
最后只做了简单的查询检查,并在其中做了一些调试,发现查询结果一直没有出现
然后把老师做好的pdo与函数也调用,发现仍是同样没有结果。
对比了手册中的例程也没有发现自己编写的有问题
然后才去检查数据库中的表,发现表竟然没有了@_@
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号