PHP連接數(shù)據(jù)庫(kù)
PDO: 靜默模式(default)/警告模式/異常模式
處理PDO靜默模式 需要用 “===”判斷等孵,避免”影響0行”的成功查詢
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); ?
try{
? ? $db = new PDO('mysql:host=localhost;dbname=practise4php','root','root');
}catch (PDOException $e){
? ? echo "errors :".$e->getMessage();
}
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
//INSERT
$row = $db->exec('INSERT INTO dishes (dish_id,dish_name,price,is_spicy) VALUES (6,\'Big Chips\',12,0)');
echo $row;
//UPDATE
$row = $db->exec('UPDATE dishes SET dish_name = \'bigchips\' WHERE dish_id = 6');
echo $row;
//DELETE
$row = $db->exec('DELETE FROM dishes WHERE dish_id = 12');
echo $row;
//使用占位符和execute($arr)傳入values進(jìn)行數(shù)據(jù)插入
$stmt = $db->prepare('INSERT INTO dishes (dish_id,dish_name,price,is_spicy) VALUES (?,?,?,?)');
$stmt->execute(array(12,'dish',111,1));
/*SELECT? 只能使用query()和fetch()方法
$q->fetch()中不帶參數(shù): 返回值為數(shù)組筒繁;
使用PDO::FETCH_NUM參數(shù):返回值為鍵值對(duì)數(shù)組;
使用PDO::FETCH_OBJ參數(shù): 返回值為對(duì)象氨距;*/
$q = $db->query('SELECT * FROM dishes ORDER BY dish_id');
while ($row = $q->fetch()){
//? ? echo "ID = {$row->dish_id} , Name = {$row->dish_name} , Price = {$row->price} , Taste = {$row->is_spicy}
";
? ? echo "ID ={$row[0]} , Name = {$row[1]} , Price = {$row[2]} , Taste = {$row[3]}
";
}
//使用默認(rèn)獲取風(fēng)格? $q->setFetchMode(PDO::FETCH_NUM);
//為所有查詢?cè)O(shè)定默認(rèn)獲取風(fēng)格袖订,在連接上調(diào)用setAttribute()方法:$db->setAttribute(PDO::DEFAULT_FETCH_MODE,PDO::FETCH_NUM);
安全獲取表單數(shù)據(jù):使用PDO提供的quote()和strtr()函數(shù)堤器。
????1.將表單提交的值傳給quote()尚粘。
????2.使用strtr()轉(zhuǎn)義SQL通配符 % 和 _ 。
轉(zhuǎn)義后的字符串可以在查詢中放心使用蝇庭。