PHP PDO扩展 ----- PDOstatement

 

<?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();   //查询出多少个字段








?>




你可能感兴趣的:(sql,PHP,数据库,delete,insert,扩展)