通過簡單的例子看看pdo程式設計的增刪改查
$pdo
=new pdo("mysql:host=localhost;dbname=statis_data","root","123456");
//增加
$id= rand(1,10000);
$insert_sql
="insert into test(id)values(:id)";
$result
=$pdo
->prepare($insert_sql);
$result
->execute(array(":id"
=>
$id));
$id2
= rand(1,10000);
$result
->bindparam(":id", $id2);
$result
->execute();
//刪除
$delete_sql
="delete from test where id in($id,$id2)";
$pdo
->exec($delete_sql);
//修改
$update_sql
="update test set id=111 where id=:id";
$result
=$pdo
->prepare($update_sql);
$id=
1;$result
->bindparam(":id", $id);
$result
->execute();
//查詢
$select_sql
="select * from test";
$query
=$pdo
->query($select_sql);
while($row
=$query
->fetch())
pdo程式設計為資料庫遷移做好準備。通常資料庫確定後是很少變得,至少網際網路開發是這樣的
pdo程式設計讀取缺點,相對於mysqli之類的擴充套件,會有一些效能損失,有些情況下這種損失
是無法接受的。
php的mysqli程式設計的例子
class
mysqlhandle
if(!isset($db_config["host"]) || !isset($db_config["user"]) || !isset($db_config["password"]) || !isset($db_config["db"]))
$this->host = $db_config["host"];
$this->user = $db_config["user"];
$this->password = $db_config["password"];
$this->db = $db_config["db"];
if(isset($db_config["port"])) $this->port = $db_config["port"];
if(isset($db_config["charsert"]))$this->charsert = $db_config["charsert"];
if(isset($db_config["timeout"])) $this->timeout = $db_config["timeout"];
$this->processconnect();
}public
function
processconnect
() $this->resource_arr[$db_key] = $this->current_connect;
}else
}public
function
getconnect
()
if(!$mysqli->real_connect($this->host,$this->user,$this->password,$this->db,$this->port))
$mysqli->set_charset($this->charset);
$this->current_connect = $mysqli;
}public
function
reconnect
() }catch(exception
$e) }while($try_time > 0);}}
public
function
__destruct
() public
function
checkconnect
() }
public
function
query
($sql)else
return
$ret;
}public
function
insert
($sql)
public
function
fetchrow
($sql)
return
$ret;
}public
function
fetchrows
($sql,$resulttype = mysqli_assoc)
$result->free();
}return
$ret;
}public
function
getqueryerror
() public
function
starttrans
() public
function
transcommit
() public
function
transrollback
()}
優化可以參考
mysql優化1
mysql優化2
索引和效能分析–網上找了10點,作為優化的補充吧
盡量避免在列上做運算,這樣會導致索引失敗
使用join時,應該用小結果集驅動大結果集。
注意like模糊查詢的使用,避免%%
僅列出需要查詢的字段,這對速度不會有明顯的影響,主要考慮節省記憶體。
使用批量插入語句節省互動。
limit的基數比較大的時候使用between。
不要使用rand()函式獲取多條隨機記錄
避免使用null。
不要使用count(id),而應該是count(*)。
不要做無謂的排序操作,而盡可能在索引中完成排序。
伺服器和配置優化
mysql瓶頸
如果mysql實在不滿足您的要求,mongodb,redis,memcache可以走起了
資料庫設計
正規化的問題,還是可以參考上面的部落格啦。
mysql的注入問題需要大家注意,注意轉義輸入輸出。
抽象出資料庫的一些常用的屬性和方法,子類去實現具體的部分
php資料庫程式設計,php資料庫程式設計步驟
php有三種方式來操作mysql資料庫 1.mysql擴充套件庫 2.mysqli擴充套件庫 3.pdo mysql擴充套件庫和mysql資料庫的區別 mysql資料庫用於存放資料 mysql資料庫的三層結構示意圖 mysql擴充套件庫是一堆函式,是php設計者提供給程式設計師用於完成對mysql資...
資料庫 資料庫程式設計二
標頭檔案 include include include include include include include ifdef cplusplus extern c endif 輔助方法實現 include pub.h 設定退格鍵不回顯 intset backkey 設定tremios的擦除字...
php資料庫程式設計 利用mysql擴充套件庫運算元據庫。
mysql擴充套件庫是一堆函式.是php設計者提供給程式設計師用於完成對mysql資料庫的各種操作 crud 使用php的mysql擴充套件庫完成對mysql操作的案例 1.編寫php程式完成對使用者表的顯示 mysql擴充套件庫操作mysql資料庫步驟如下 1.獲取連線 conn mysql co...