一 實例化pdo對象
$dsn = "mysql:dbname=test;host=127.0.0.1";
$pdo = new PDO($dsn,'root','root');
?
二 數據查詢
1、如果不根據用戶傳過來的值進行操作,可以直接query sql
$dsn = "mysql:dbname=test;host=127.0.0.1";
$pdo = new PDO($dsn,'root','root');
$sql = "select * from student";
$stmt = $pdo->query($sql);
var_dump($stmt->fetchAll(2));
數據是可以正常顯示的
array (size=39)0 => array (size=8)'id' => '1' (length=1)'name' => '周更生' (length=9)'sex' => '男' (length=3)'age' => '24' (length=2)'edu' => '大專' (length=6)'salary' => '5000.00' (length=7)'bonus' => '200.00' (length=6)'city' => '山東省' (length=9)1 => array (size=8)'id' => '2' (length=1)'name' => '王小平' (length=9)'sex' => '男' (length=3)'age' => '28' (length=2)'edu' => '大專' (length=6)'salary' => '500.00' (length=6)'bonus' => '200.00' (length=6)'city' => '陜西省' (length=9)2 => array (size=8)'id' => '3' (length=1)'name' => '周改娟' (length=9)'sex' => '女' (length=3)'age' => '28' (length=2)'edu' => '大專' (length=6)'salary' => '8000.00' (length=7)...
(size=39)0 => array (size=8)'id' => '1' (length=1)'name' => '周更生' (length=9)'sex' => '男' (length=3)'age' => '24' (length=2)'edu' => '大專' (length=6)'salary' => '5000.00' (length=7)'bonus' => '200.00' (length=6)'city' => '山東省' (length=9)1 => array (size=8)'id' => '2' (length=1)'name' => '王小平' (length=9)'sex' => '男' (length=3)'age' => '28' (length=2)'edu' => '大專' (length=6)'salary' => '500.00' (length=6)'bonus' => '200.00' (length=6)'city' => '陜西省' (length=9)2 => array (size=8)'id' => '3' (length=1)'name' => '周改娟' (length=9)'sex' => '女' (length=3)'age' => '28' (length=2)'edu' => '大專' (length=6)'salary' => '8000.00' (length=7)...
?
2、sql中帶變量進行查詢
$id = 5;
$pdo = new \PDO('mysql:host=127.0.0.1;dbname=test','root','123456');
//查詢操作
$stmt = $pdo->query("select * from user where id ='{$id}' limit 1");
$data = $stmt->fetch(2);
var_dump($data);
?
3、 如果是根據用戶傳過來的值進行查詢,為了防止sql注入,就需要預處理之后再進行查詢
$dsn = "mysql:dbname=test;host=127.0.0.1";
$pdo = new PDO($dsn,'root','root');
$name = '孫娟';//這里的$name是接收用戶傳過來的值,這里我們為了簡潔,直接定位
$sql = "select * from student where name=:name";
$stmt = $pdo->prepare($sql);
$stmt->execute(array('name'=>$name));
var_dump($stmt->fetch(2));
結果同樣可以正常信息顯示:
array (size=8)'id' => '6' (length=1)'name' => '孫娟' (length=6)'sex' => '女' (length=3)'age' => '24' (length=2)'edu' => '大本' (length=6)'salary' => '12300.00' (length=8)'bonus' => '1080.00' (length=7)'city' => '北京市' (length=9)
(size=8)'id' => '6' (length=1)'name' => '孫娟' (length=6)'sex' => '女' (length=3)'age' => '24' (length=2)'edu' => '大本' (length=6)'salary' => '12300.00' (length=8)'bonus' => '1080.00' (length=7)'city' => '北京市' (length=9)
?
?
三 我們需要知道的連接mysql數據庫的三種方式及區別
?
1、pdo
pdo操作mysql數據庫雖然效率相較于mysqli會稍微低了一點點,但勝在擴展性強,以后換數據庫可以很方便的進行遷移,代碼幾乎不用改動,所以極其推薦使用pdo連接操作數據庫
?
2、mysqli
mysqli同樣可以實現連接并操作mysql數據庫,同樣和pdo一樣,也支持預處理,并且單純從效率上來說,好像還比pdo稍微好了那么一點,但缺點是它只能連接mysql數據庫,擴展性太差,一旦以后更換數據庫,很多代碼都需要重寫
?
3、mysql
mysql直接連接數據庫,現在官方都把mysql函數廢棄了,你還在執著嗎? 第一它只支持mysql數據庫,可擴展性太差.第二,不支持預處理,安全問題堪憂,所以,千萬不要使用mysql連接數據庫方式,改用pdo或者mysqli吧
?
想了解更多可參考?https://www.helloweba.net/php/573.html