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/>";
}