Correction status:Uncorrected
Teacher's comments:
<?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与函数也调用,发现仍是同样没有结果。
对比了手册中的例程也没有发现自己编写的有问题
然后才去检查数据库中的表,发现表竟然没有了@_@