要分表的話,可以把一些不需要必填的字段拆出來(lái),盡量達(dá)到減少數(shù)據(jù)冗余的效果,比如主表100條記錄,從表的記錄可能少于100條即可。
成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),廣河企業(yè)網(wǎng)站建設(shè),廣河品牌網(wǎng)站建設(shè),網(wǎng)站定制,廣河網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷,網(wǎng)絡(luò)優(yōu)化,廣河網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
插入的問題,你需要使用事務(wù)保證數(shù)據(jù)同步,以后有經(jīng)驗(yàn)了,最好使用存儲(chǔ)過(guò)程來(lái)保證事務(wù)。
$servername?=?"localhost";
$username?=?"username";
$password?=?"password";
$dbname?=?"myDB";
//?創(chuàng)建連接
$conn?=?new?mysqli($servername,?$username,?$password,?$dbname);
//?檢測(cè)連接
if?($conn-connect_error)?{
die("Connection?failed:?"?.?$conn-connect_error);
}?
//?sql?to?create?table
$sql?=?"CREATE?TABLE?MyGuests?(
id?INT(6)?UNSIGNED?AUTO_INCREMENT?PRIMARY?KEY,?
firstname?VARCHAR(30)?NOT?NULL,
lastname?VARCHAR(30)?NOT?NULL,
email?VARCHAR(50),
reg_date?TIMESTAMP
)";
if?($conn-query($sql)?===?TRUE)?{
echo?"Table?MyGuests?created?successfully";
}?else?{
echo?"Error?creating?table:?"?.?$conn-error;
}
$conn-close();
?php
class MysqlManage{
/*創(chuàng)建數(shù)據(jù)庫(kù),并且主鍵是aid
* table 要查詢的表名
*/
function createTable($table){
$sql="CREATE TABLE IF NOT EXISTS `$table` (`aid` INT NOT NULL primary key)ENGINE = InnoDB;";
M()-execute($sql);
$this-checkTable($table);
}
/*
* 檢測(cè)表是否存在,也可以獲取表中所有字段的信息
* table 要查詢的表名
* return 表里所有字段的信息
*/
function checkTable($table){
$sql="desc `$table`";
$info=M()-execute($sql);
return $info;
}
/*
* 檢測(cè)字段是否存在,也可以獲取字段信息(只能是一個(gè)字段)
* table 表名
* field 字段名
*/
function checkField($table,$field){
$sql='desc `$table` $field';
$info=M()-execute($sql);
return $info;
}
/*
* 添加字段
* table 表名
* info 字段信息數(shù)組 array
* return 字段信息 array
*/
function addField($table,$info){
$sql="alter table `$table` add column";
$sql.=$this-filterFieldInfo();
M()-execute($sql);
$this-checkField($table,$info['name']);
}
/*
* 修改字段
* 不能修改字段名稱,只能修改
*/
function editField($table,$info){
$sql="alter table `$table` modify ";
$sql.=$this-filterFieldInfo($info);
M()-execute($sql);
$this-checkField($table,$info['name']);
}
/*
* 字段信息數(shù)組處理,供添加更新字段時(shí)候使用
* info[name] 字段名稱
* info[type] 字段類型
* info[length] 字段長(zhǎng)度
* info[isNull] 是否為空
* info['default'] 字段默認(rèn)值
* info['comment'] 字段備注
*/
private function filterFieldInfo($info){
if(!is_array($info))
return
$newInfo=array();
$newInfo['name']=$info['name'];
$newInfo['type']=$info['type'];
switch($info['type']){
case 'varchar':
case 'char':
$newInfo['length']=empty($info['length'])?100:$info['length'];
$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
$newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];
$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];
break;
case 'int':
$newInfo['length']=empty($info['length'])?7:$info['length'];
$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
$newInfo['default']=empty($info['default'])?'':'DEFAULT '.$info['default'];
$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];
break;
case 'text':
$newInfo['length']='';
$newInfo['isNull']=$info['isNull']==1?'NULL':'NOT NULL';
$newInfo['default']='';
$newInfo['comment']=empty($info['comment'])?'':'COMMENT '.$info['comment'];
break;
}
$sql=$newInfo['name']." ".$newInfo['type'];
$sql.=(!empty($newInfo['length']))?($newInfo['length']) .' ':' ';
$sql.=$newInfo['isNull'].' ';
$sql.=$newInfo['default'];
$sql.=$newInfo['comment'];
return $sql;
}
/*
* 刪除字段
* 如果返回了字段信息則說(shuō)明刪除失敗,返回false,則為刪除成功
*/
function dropField($table,$field){
$sql="alter table `$table` drop column $field";
M()-execute($sql);
$this-checkField($table,$filed);
}
/*
* 獲取指定表中指定字段的信息(多字段)
*/
function getFieldInfo($table,$field){
$info=array();
if(is_string($field)){
$this-checkField($table,$field);
}else{
foreach($field as $v){
$info[$v]=$this-checkField($table,$v);
}
}
return $info;
}
}