PHP连接数据库
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进行数据插入
$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()中不带参数: 返回值为数组;
使用PDO::FETCH_NUM参数:返回值为键值对数组;
使用PDO::FETCH_OBJ参数: 返回值为对象;*/
$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]}
";
}
//使用默认获取风格 $q->setFetchMode(PDO::FETCH_NUM);
//为所有查询设定默认获取风格,在连接上调用setAttribute()方法:$db->setAttribute(PDO::DEFAULT_FETCH_MODE,PDO::FETCH_NUM);
安全获取表单数据:使用PDO提供的quote()和strtr()函数。
1.将表单提交的值传给quote()。
2.使用strtr()转义SQL通配符 % 和 _ 。
转义后的字符串可以在查询中放心使用。