php PDO mysql寫法

來源:互聯網
上載者:User

標籤:led   dex   upd   port   username   索引值   查詢   大小寫   版本   

php PDO寫法串連mysql;

寫法一:

$db="mysql:host=localhost;dbname=sql" ; //串連資料,地址localhost;資料庫名稱sql;

$username="root"; //資料庫登入帳號;

$password="root"; //資料庫登入密碼;

try{

  $pdo=new PDO($db,$username,$password);   //串連資料庫賦值$pdo;

}catch(PDOException $e){

  echo "PDO串連失敗".$e->getMessage();

}

寫法二:

$db=new PDO("mysql:host=localhost;dbname=sql","root","root");  //串連資料,地址localhost;資料庫名稱sql;資料庫登入帳號密碼; 串連賦值$db

 

PDO增刪查改

案例一:

<?php
$dbh = new PDO(‘mysql:host=localhost;dbname=access_control‘, ‘root‘, ‘‘);  
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);  
$dbh->exec(‘set names utf8‘); 
/*添加*/
//$sql = "INSERT INTO `user` SET `login`=:login AND `password`=:password"; 
$sql = "INSERT INTO `user` (`login` ,`password`)VALUES (:login, :password)";  $stmt = $dbh->prepare($sql);  $stmt->execute(array(‘:login‘=>‘kevin2‘,‘:password‘=>‘‘));  
echo $dbh->lastinsertid();  
/*修改*/
$sql = "UPDATE `user` SET `password`=:password WHERE `user_id`=:userId";  
$stmt = $dbh->prepare($sql);  
$stmt->execute(array(‘:userId‘=>‘7‘, ‘:password‘=>‘4607e782c4d86fd5364d7e4508bb10d9‘));  
echo $stmt->rowCount(); 
/*刪除*/
$sql = "DELETE FROM `user` WHERE `login` LIKE ‘kevin_‘"; //kevin%  
$stmt = $dbh->prepare($sql);  
$stmt->execute();  
echo $stmt->rowCount();  
/*查詢*/
$login = ‘kevin%‘;  
$sql = "SELECT * FROM `user` WHERE `login` LIKE :login";  
$stmt = $dbh->prepare($sql);  
$stmt->execute(array(‘:login‘=>$login));  
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){     
 print_r($row);  
}  
print_r( $stmt->fetchAll(PDO::FETCH_ASSOC)); 
?>

案例二:

 

<?php header("content-type:text/html;charset=utf-8"); $dsn="mysql:dbname=test;host=localhost"; $db_user=‘root‘; $db_pass=‘admin123‘; try{ $pdo=new PDO($dsn,$db_user,$db_pass); }catch(PDOException $e){ echo ‘資料庫連接失敗‘.$e->getMessage(); } //新增 $sql="insert into test (id,user) values (1,‘phpthinking‘)";  $res=$pdo->exec($sql); echo ‘影響行數:‘.$res; //修改 $sql="update test set user=‘phpthinking‘ where id=1"; $res=$pdo->exec($sql); echo ‘影響行數:‘.$res; //查詢 $sql="select * from test"; $res=$pdo->query($sql); foreach($res as $row){ echo $row[‘user‘].‘<br/>‘; } //刪除 $sql="delete from test where id=1"; $res=$pdo->exec($sql); echo ‘影響行數:‘.$res;

 ?>

 

PDO語句說明

<?php

$pdo=new PDO("mysql:dbname=test;host=127.0.0.1;port=3306","root","php");

$pdo=new PDO("mysql:dbname=資料庫;host=127.0.0.1;port=3306","root","php",array(PDO::ATTR_PERSISTENT=>true));

$pdo->setAttribute(PDO::ATTR_PERSISTENT,true);//設定資料庫連接為持久串連

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//設定拋出錯誤

$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS,true);//設定當字串為空白轉換為SQL的NULL

$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);//表欄位字元的大小寫轉換或原樣使用列資訊

$pdo->query("SET NAMES utf8");//設定資料庫編碼

$pdo->query(sql語句);//返回PDOStatement對象,一般用於select

$pdo->exec(sql語句);//返回受影響行數,一般用於insert|update|delete

$sm=$pdo->query();

$sm->rowCount()//返回記錄數

$pdo=null;//釋放資源

while($data=$sm->fetch()){print_r($data);}//只會返回一條資料

$sm->setFetchMode(PDO::FETCH_ASSOC);//只返回關聯索引

$data=$sm->fetchAll();//返回所有資料

$sm=$pdo->prepare(sql語句);

$sm->execute();

$data=$sm->fetchColumn();//一般用來進行count統計

將列分發到變數

$sm->bindColumn(數字,變數);

$sm->bindColumn(欄位名,變數);

while($data=$sm->fetch(PDO::FETCH_BOUND)){}

替換變數

$sm=$pdo->prepare(":佔位變數");

$sm->bindParam(":佔位變數",值,PDO::PARAM_INT);

$sm->bindParam(":佔位變數",值,PDO::PARAM_STR,12);

$sm->execute();

替換問號預留位置

$sm=$pdo->prepare("?");

$sm->bindValue(1,值,PDO::PARAM_INT);//第1個問號

$sm->bindValue(2,值,PDO::PARAM_STR,12);//第2個問號

$sm->execute();

方法

PDO::query()//處理一條SQL語句並返回一個PDOStatement對象

PDO::lastInsertId()//擷取插入到表中的最後一條資料的主索引值

PDO::prepare()//負責準備執行的SQL語句

PDO::exec()//處理一條SQL語句並返回所影響的行數

PDO::beginTransaction//開始一個事務並標明復原起始點

PDO::commit//提交一個事務並執行SQL語句

PDO::__construct//建構函式

PDO::errorCode//擷取錯誤碼

PDO::errorInfo//擷取錯誤資訊

PDO::getAttribute//擷取一個資料庫連接對象的屬性

PDO::getAvailableDrivers//擷取有效PDO磁碟機名稱

PDO::inTransaction

PDO::quote//為某個SQL語句中的字串添加引號

PDO::rollBack//復原一個事務

PDO::setAttribute//為一個資料庫連接對象設定屬性

PDOStatement::bindColumn//將列分發到變數

PDOStatement::bindParam//替換變數

PDOStatement::bindValue//替換問號預留位置

PDOStatement::closeCursor//關閉游標

PDOStatement::columnCount//欄位數

PDOStatement::debugDumpParams

PDOStatement::errorCode//擷取錯誤碼

PDOStatement::errorInfo//擷取錯誤資訊

PDOStatement::execute//執行語句

PDOStatement::fetch//只會返回一條資料

PDOStatement::fetchAll//返回所有資料

PDOStatement::fetchColumn//一般用來進行count統計

PDOStatement::fetchObject

PDOStatement::getAttribute

PDOStatement::getColumnMeta

PDOStatement::nextRowset

PDOStatement::rowCount//記錄數

PDOStatement::setAttribute

PDOStatement::setFetchMode

常量

PDO::ATTR_AUTOCOMMIT//是否開啟自動認可功能true|false

PDO::ATTR_PREFETCH//設定應用程式提前擷取的資料大小[KB為單位]

PDO::ATTR_TIMEOUT//設定逾時之前的等待時間[秒為單位]

PDO::ATTR_SERVER_INFO//包含與資料庫特有的伺服器資訊

PDO::ATTR_SERVER_VERSION//包含與資料庫伺服器版本號碼有關的資訊

PDO::ATTR_CLIENT_VERSION//包含與資料庫用戶端版本號碼有關的資訊

PDO::ATTR_CONNECTION_STATUS//設定逾時之前的等待時間[秒為單位]

PDO::CASE_LOWER//強制列名是小寫

PDO::CASE_UPPER//強制列名為大寫

PDO::CASE_NATURAL//列名按照原始的方式

PDO::FETCH_ASSOC//關聯陣列形式

PDO::FETCH_NUM//數字索引數組形式

PDO::FETCH_BOTH//兩者數組形式都有

PDO::FETCH_OBJ//按照對象的形式

?>

 

 

 

//注釋:

當異常被觸發時,通常會發生:在PHP5中添加了類似於其它語言的錯誤異常處理模組。在 PHP代碼中所產生的異常可被 throw語句拋出並被 catch 語句捕獲。需要進行異常處理的代碼都必須放入 try 代碼塊內,以便捕獲可能存在的異常。每一個 try 至少要有一個與之對應的 catch。

使用多個 catch 可以捕獲不同的類所產生的異常,當 try 代碼塊不再拋出異常或者找不到 catch 能匹配所拋出的異常時,PHP 代碼就會在跳轉到最後一個 catch 的後面繼續執行。當然,PHP 允許在 catch 代碼塊內再次拋出(throw)異常,當一個異常被拋出時,其後(譯者註:指拋出異常時所在的代碼塊)的代碼將不會繼續執行,而 PHP 就會嘗試尋找第一個能與之匹配的 catch,如果一個異常沒有被捕獲,而且又沒用使用 set_exception_handler() 作相應的處理的話,那麼 PHP 將會產生一個嚴重的錯誤,並且輸出 Uncaught Exception ... (未捕獲異常)的提示資訊.

<?php

詳細:

http://www.jb51.net/article/61316.htm

http://www.jb51.net/article/59692.htm

http://www.jb51.net/article/61317.htm

?>

php PDO mysql寫法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.