1. 連結資料庫:
#連結資料庫
$connection = new PDO('mysql:host=localhost;dbname=pdo_example;charset=utf8', 'root', '12345678');
執行Query
$connection->exec('INSERT INTO pdo VALUES ("","PJCHENder", 12345678)');
#查詢Query的結果
$statement = $connection->query('select * from pdo');
foreach($statement as $row){
echo $row['user']." ".$row['pwd']."<br>";
}
或:
while($row = $statement->fetch(PDO::FETCH_ASSOC)) {
echo $row['user'] . ' ' . $row['pwd']."<br>";
}
使用PDO存取資料庫(讀取、查詢、修改、更新)
PHP存取資料庫的方式有很多
這篇要介紹的是,如何使用PDO查詢、修改、更新資料庫
在說明之前,先簡單介紹一下什麼是PDO?
PDO(PHP Data Objects)是一種PHP連接資料庫的使用方法
主要的好處可以避免發生SQL injection相關的問題
同時也優化了許多存取資料庫的性能
下面就直接說明如何使用PDO讀取、查詢、修改、更新資料庫內的資料
//首先,先來定義資料庫相關存取資料
$db_host = "localhost";
$db_user = "root";
$db_pass = "111111";
$db_select = "pdo_test";
//使用PDO存取資料庫時,需要將資料庫依下列格式撰寫,讓程式讀取資料庫
$dbconnect = "mysql:host=".$db_host.";dbname=".$db_select;
//建立使用PDO方式連線的物件,並放入指定的相關資料
$dbgo = new PDO($dbconnect, $db_user, $db_pass);
//建立查詢資料表的SQL語法
$sql = "SELECT * FROM pdo_test";
//執行並查詢,查詢後只回傳一個查詢結果的物件,必須使用fetc、fetcAll...等方式取得資料
$result = $dbgo->query($sql);
//取出第一筆資料,以此例來說就是最先存入資料庫的那一筆資料
$row=$result->fetch();
//抓出全部但是除了使用欄位名稱存成陣列之外,還會依照順序再另外存成一組陣列,結果如下
$row=$result->fetchAll();
//Array ( [0] => Array ( [pdo_id] => 1 [0] => 1 [pdo_name] => stanley [1] => stanley [pdo_mail] => stanley@domain.com [2] => stanley@domain.com [pdo_login] => 0 [3] => 0 ) )
//加入FETCH_ASSOC,代表要將取出的資料已關聯性的方式存成陣列,同時也適用於各式抓取資料的方法(如上面提到的fetch),結果如下
$row=$result->fetchAll(PDO::FETCH_ASSOC);
//Array ( [0] => Array ( [pdo_id] => 1 [pdo_name] => stanley [pdo_mail] => stanley@domain.com [pdo_login] => 0 )
//如果需要做的是執行SQL語法的工作(例如插入、更新、修改),則必須使用下面的方式執行SQL語法
//首先下列這是要執行插入的語法
$sql_insert = "INSERT INTO `pdo_test` (`pdo_id`, `pdo_name`, `pdo_mail`, `pdo_login`) VALUES (NULL, 'stanley', 'stanley@domain.com', '0')";
//方法一:可直接使用exec的方法,把要執行的SQL語法放入exec函式內
$dbgo->exec($sql_insert);
//方法二:必須先將要執行的語法放入prepare函數中,等到需要執行的時候再使用execute的方法來執行
$inserert_2 = $dbgo->prepare($sql_insert);
$inserert_2->execute();
最後大家看看自家的資料表是不是有資料被輸入或網頁正常顯示,就知道是不是成功了
據說PHP7之後,PHP就會捨棄過去mysql_query的方式去存取資料表,但目前仍找不到資料出處
(碎碎念:目前史丹利用PHP5.5版測試時,只要是使用mysql_query存取,就會出現警告訊息,因此很有可能是真的)
所以大家還是先預先準備,學習PDO存取資料庫的方法
如果覺得對你有幫助的話. 請幫小弟按個讚吧~
Sample:
$hostname = 'localhost';
$username = 'user';
$password = 'password';
$db_name="drupaldb";
try{
$db=new PDO("mysql:host=".$hostname.";
dbname=".$db_name, $username, $password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
//PDO::MYSQL_ATTR_INIT_COMMAND 設定編碼
//echo '連線成功';
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); //錯誤訊息提醒
//Query SQL
$sql="Select * from act where num=3";
$result=$db->query($sql);
while($row=$result->fetch(PDO::FETCH_OBJ)){
//PDO::FETCH_OBJ 指定取出資料的型態
echo $row->num."\n";
echo $row->cn_title."\n";
}
//Insert
$count=$db->exec("insert into act(cn_title,eng_title) values('新聞', 'troy')");
echo $count;
//Update
$count=$db->exec("update act set cn_title='中文' where num=3");
$db=null; //結束與資料庫連線
}
catch(PDOException $e){
//error message
echo $e->getMessage();
}
?>