<?php
/*
* Created on 2011-11-22
*/
/*
* PDO 对数据库的连接
* */
$dns = "mysql:dbname=bbs;host=localhost";
$username = "root";
$password = "";
$pdo = new PDO($dns,$username,$password);
$pdo->query("set names utf8"); //在mysqli 里面有 set_charset(可以来设置编码),便在PDO里面没有,所以就直接执行数据库设置编码语句
/*
* 下面主要学习一下PDOstatement的用法,主要是从预处理来说
*
* */
//$stmt = $pdo->prepare();//返回一个PDOstatement对象,还有一个返回PDOstatement的方法是query
// 利用foreach 直接操作Pdostatement
/*--------------------------------------------------------------------------
* 可以用 foreach 直接到 $statement 访问\
* $sql = "select * from news";
//$stmt = $pdo->prepare();//返回一个PDOstatement对象,还有一个返回PDOstatement的方法是query
$statement = $pdo->query($sql);
foreach($statement as $row)
{
echo $row['id']."---".$row['title']."---".$row['content']."</br>";
}
*-----------------------------------------------------------------------------
* 下面对准备语句的操作
* 操作流程:
* 1. prepare
* 两种参数绑定方式: 1. :title,:content 2: ?
* 2. 执行参数绑定操作 $stmt->bindParam(":title",$title); 也还以用bindValue() 绑定的只是能常量
* 3. 执行绑定语句 $stmt->execute()
* 4. 可以用rowCount 来查询受影响的行数,lastInsertId() 查义插入记录的ID
$sql = "delete from news where id =?";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(1,$id);
$id = GET['id'];
if($stmt->execute())
echo "受影响 ".$stmt->rowCount();
else
echo "SQL语句执行失败";
$sql = "insert into news values('',:title,:content)";
$stmt = $pdo->prepare($sql);
$title="dfd";
$content="dfd";
$stmt->bindParam(":title",$title);
$stmt->bindParam(":content",$content);
$stmt->execute();
echo $stmt->rowCount();
echo $pdo->lastInsertId();
*/
/* 获取数据
* =----------------------------------------------------------------------
*
* 方法:
* 1 fetch()
*
$sql = "select * from news";
$stmt = $pdo->query($sql);
while($row = $stmt->fetch(PDO::FETCH_ASSOC))
{
var_dump($row);
}
2 fetchAll()
$sql = "select * from news";
$stmt = $pdo->query($sql);
$row = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($row);
var_dump("下面是查找列的值");
//还可以指定列的值
$column = $stmt->fetchAll(PDO::FETCH_COLUMN,1);
var_dump($column);
setFetchMode
*-----------------------------------------------------------------
*
* bindColumn
*
*------------------------------------------------------------------
* bindColumn 是将查询出来的记录绑定到指定的变量上去,这个先绑定变量,然后再
* 执行 fetch(PDO::FETCH_COLUMN)将第条记录绑定;
* $sql = "select * from news where id=13";
$stmt = $pdo->query($sql);
$stmt->bindColumn("id",$id);
$stmt->bindColumn("title",$title);
$stmt->bindColumn("content",$content);
while($stmt->fetch(PDO::FETCH_COLUMN))
{
var_dump("id :".$id);
var_dump("title :".$title);
var_dump("content :".$content);
}
fetchColumn(n)查询出第N个字段的值
columnCount 得到字段的个数
-----------------------------------------
* */
$sql = "select * from news";
$stmt =$pdo->query($sql);
while($title=$stmt->fetchColumn(2)) //将每条记录的第二个字符查询出来
{
var_dump($title);
}
echo $stmt->columnCount(); //查询出多少个字段
?>