pdo中执行sql语句的方法有2个:
1、exec() 用来处理非结果的 insert update delete create
返回影响行数
如果是插入语句可以使用lastinsertid()方法获取最后自动插入的id
2、query() 用来处理有结果集的语句 select desc show
返回来的是PDOStatement类的对象 再通过这个类 的方法获取结果,也可以直接foreach遍历获取结果
(但不建议使用)
$dbms = 'mysql'; $host = 'localhost'; $dbName = 'mytest'; $user = 'root'; $password = '123456'; $dsn = "$dbms:host=$host;dbname=$dbName"; try{ $dbh = new PDO($dsn,$user,$password); }catch(PDOException $exception){ echo "message:".$exception->getMessage(); }
查询:
$sqlquery = "select * from fruits"; $result = $dbh->query($sqlquery); echo $dbh->errorCode()."<br/>"; print_r($dbh->errorInfo()); foreach ($result as $row) { $f_id = $row['f_id']; $s_id=$row['s_id']; $f_name=$row['f_name']; $f_price=$row['f_price']; echo "f_id:$f_id,s_id:$s_id,f_name:$f_name,f_price:$f_price<br/>"; } $sqlquery="select * from fruits"; $result = $dbh->query($sqlquery); $rownum = $result->rowCount(); echo "总共有".$rownum."个用户:<br/>";
PDOStatement::fetch()参数: PDO::FETCH_ASSOC选项是把返回的数据读取为关联数组 PDO::FETCH_NUM选项是把返回的数据读取为数字索引数组 PDO_FETCH_BOTH选项是把返回的数据读取为数组,包括数字索引数组和关联数组 PDO::FETCH_OBJ选项是把返回的数据读取为一个对象,不同字段的数据作为其对象属性 while($row = $result->fetch(PDO::FETCH_ASSOC)){ $f_id = $row['f_id']; $s_id=$row['s_id']; $f_name=$row['f_name']; $f_price=$row['f_price']; echo "f_id:$f_id,s_id:$s_id,f_name:$f_name,f_price:$f_price<br/>"; }
fetchAll() 获取所有数据
读取$result对象为数字索引数组和关联数组两种类
$rowall = $result->fetchAll(); foreach($rowall as $row){ $f_id = $row[0]; $s_id = $row[1]; $f_name =$row[2]; echo "f_id:$f_id,s_id:$s_id,f_name:$f_name<br/>"; }
PDO执行SQL添加
$sql_insert = "insert into fruits(f_id,s_id,f_name,f_price) values(null,3,'zhangsan',99)"; if($dbh->exec($sql_insert)){ echo "数据新增成功<br/>"; }
PDO执行SQL更新
$sql_update = "UPDATE fruits SET f_name='李四' WHERE f_id=3"; if($dbh->exec($sql_update)){ echo "数据更新成功<br/>"; }
PDO执行SQL删除语句
$sql_delete = "DElete from fruits where f_id = 4"; if($dbh->exec($sql_delete)){ echo "数据删除成功<br/>"; }