⑴ thinkphp對資料庫操作有哪些內置函數
8.4.4 Model類
getModelName() 獲取當前Model的名稱
getTableName() 獲取當前Model的數據表名稱
switchModel(type,vars=array()) 動態切換模型
table() 設置當前操作的數據表
field() 設置要查詢的數據欄位
where() 設置查詢或者操作條件
data(data) 設置數據對象
order(order) 設置排序
limit(limit) 查詢限制
page(page) 查詢分頁
join(join) 進行JOIN查詢
having(having) 進行having查詢
group(group) 進行group查詢
lock(lock) 查詢鎖定
distinct(distinct) 唯一性查詢
count(field) 記錄統計
sum(field) 總數查詢
min(field) 最小值查詢
max(field) 最大值查詢
avg(field) 平均值查詢
_initialize() 模型初始化方法
_facade(data) 對保存到資料庫的數據進行處理
_before_write(&data) 寫入數據前的回調方法 包括新增和更新
add(data='',options=array()) 新增數據
_before_insert(&data,options) 寫入數據前的回調方法
_after_insert(data,options) 寫入數據後的回調方法
selectAdd(fields='',table='',options=array()) 通過Select方式添加記錄
save(data='',options=array()) 更新數據到資料庫
_before_update(&data,options) 更新數據前的回調方法
_after_update(data,options) 更新成功後的回調方法
delete(options=array()) 刪除數據
_after_delete(data,options) 刪除成功後的回調方法
select(options=array()) 查詢數據集
_after_select(&resultSet,options) 查詢成功後的回調方法
findAll(options=array()) select方法的別名
_options_filter(&options) 表達式過濾回調方法
find(options=array()) 查詢數據
_after_find(&result,options) 查詢成功的回調方法
setField(field,value,condition='') 設置記錄的某個欄位值
setInc(field,condition='',step=1) 欄位值增長
setDec(field,condition='',step=1) 欄位值減少
getField(field,condition='',sepa=' ') 獲取某個欄位值
create(data='',type='') 創建數據對象
autoCheckToken(data) 表單令牌驗證
query(sql) 執行原生SQL查詢
execute(sql='') 執行原生SQL操作
startTrans() 啟動事務
commit() 提交事務
rollback() 事務回滾
getError() 獲取模型的錯誤信息
getDbError() 獲取資料庫的錯誤信息
getLastInsID() 獲取最後執行的SQL語句
getPk() 獲取主鍵名稱
getDbFields() 獲取數據表的欄位信息
regex(value,rule) 使用正則驗證數據
setProperty(name,value) 設置模型的屬性值
2.1版新增方法:
db(linkNum,config='') 切換當前資料庫連接
高級模型類AdvModel
topN(count,options=array()) 查詢滿足條件的前N個記錄
getN(position=0,options=array()) 查詢符合條件的第N條記錄
0 表示第一條記錄 -1 表示最後一條記錄
first(options=array()) 獲取滿足條件的第一條記錄
last(options=array()) 獲取滿足條件的最後一條記錄
returnResult(data,type='') 返回指定的數據類型
setLazyInc(field,condition='',step=1,lazyTime=0) 欄位值延遲增長
setLazyDec(field,condition='',step=1,lazyTime=0) 欄位值延遲減少
addConnect(config,linkNum=NULL) 增加資料庫連接
delConnect(linkNum) 刪除資料庫連接
closeConnect(linkNum) 關閉資料庫連接
switchConnect(linkNum,name='') 切換資料庫連接
patchQuery(sql=array()) 批處理執行SQL語句
getPartitionTableName(data=array()) 得到分表的的數據表名
⑵ Php資料庫和函數問題
這兩個函數功能完全不同:
mysql_affected_rows 取得前一次 MySQL 操作所影響的記錄行數,操作是指INSERT、UPDATE、DELETE等,影響是指修改、變化的。如果函數失敗,返回值是-1。此函數參數為連接ID,也可以不要參數(當前默認的連接)。
mysql_num_rows()返回結果集中行的數目,僅對 SELECT 語句有效。注意其參數是mysql_query返回的結果集ID。
⑶ 請問php的資料庫函數中mysql_fetch_row、mysql_affected_rows、mysql_num_rows的區別
1.當從資料庫中取出數據時,mysql_num_rows()函數返回符合查詢條件的記錄行數,如果沒有符合的,返回0。
2.當向資料庫插入數據和更新某個記錄的部分內容時,用mysql_affected_rows返回插入或者更新成功的行數。
3.mysql_fetch_row()函數是查詢成功後,把查詢結果的一行取到一個數組中,以備使用;每執行一次mysql_fetch_row(),將自動取到結果中的下一行記錄。
⑷ 怎樣用PHP中的MySQL操作函數
1. 建立MySQL 連接:mysql_connect
resource mysql_connect([string $server[, string $username [, string $password [, bool $new_link [, int $client flags]]]]])
打開或重復使用一個到MySQL伺服器的連接。其中,server代表MySQL伺服器,可以包括埠號,例如「hostname:port」。username和password分別代表登錄MySQL伺服器使用的用戶名和密碼。
2. 選擇 MySQL 資料庫:mysql_select_db
bool mysql_select_db(string $database_name[, resource $link_identifier])
設定與指定的連接標識符所關聯的伺服器上的當前資料庫。如果沒有指定連接標識符,則使用上一個打開的連接。如果沒有打開的連接,本函數將無參數地調用mysql_connect()來嘗試打開一個資料庫連接。如果成功則返回true,失敗則返回false。每個其後的mysgl_query()調用都會作用於活動資料庫。
3. 執行查詢:mysql_query
resource mysql_query(string $query[, resource $link_identifier])
向與指定的連接標識的關聯的伺服器中的當前活動資料庫發送一條查詢。如果沒有指定 link_identifier,則使用上一個打開的連接。如果沒有打開的連接,本函數會嘗試無參數地調用mysql_connect()函數來建立一個連接,查詢結果會被緩存。mysql_query()僅對SELECT、SHOW、EXPLAIN或DESCRIBE語句返回一個資源標識符,如果查詢執行不正確則返回false。對於其他類型的SQL語句,mysgl_query()在執行成功時返回true,出錯時返回false。非false的返回值意味著查詢是合法的並能夠被伺服器執行但是並不說明任何影響到的或返回的行數。因為一條查詢執行成功了但並未影響到或並未返回任何行的情況是可能發生的。
4. 從結果集中取得一行作為枚舉數組:mysql_fetch_row
array mysql_fetch_row(resource $result)
從和指定的結果標識關聯的結果集中取得一行數據並作為數組返回。每個結果的列儲存在一個索引數組的單元中,偏移量從0開始。依次調用mysql_fetch_row()將返回結果集中的下一行,如果沒有更多行則返回false。
5. 從結果集中取得一行作為關聯數組,或數字數組,或二者兼有:mysql_fetch_array
array mysql_fetch_array(resource $result[, int $result_type])
mysql_fetch_row()的擴展版本。除了將數據以數字索引方式儲存在數組中之外,還可以將數據作為關聯索引儲存,用欄位名作為鍵名。如果結果中出現欄位名重名的現象,最後一列將優先。要訪問同名的其他列,必須用該列的數字索引或給該列起個別名。對有別名的列,用別名來訪問其內容。
6. 關閉 MySQL 連接:mysql_close
bool mysql_close([resource $link_identifier])
mysql_close()關閉指定的連接標識所關聯的到MySQL伺服器的非持久連接。如果沒有指定link_identifier,則關閉上一個打開的連接。
例PHP中使用MySQL資料庫(mysql.php)
<?php//連接MySQL資料庫
mysql_connect('localhost', 'root', '123');
//選擇當前資料庫
//等效為執行USE test
mysql_select_db('test');
//在當前資料庫執行SQL語句
$query = "SELECT * FROM students";
$result = mysql_query($query);
//操作上次查詢返回的結果集,注意$result變數一般是需要的
while($student = mysql_fetch_array($result)) {
echo '<pre>';
print_r($student);
echo '</pre>';
}
?>
⑸ php怎麼鏈接資料庫,使用哪個函數
如上圖,使用mysql_connect()方法鏈接到資料庫
⑹ php連接mysql資料庫,用什麼函數
第一個問題:的1是把mysql的鏈接函數做了封裝,即封裝成類了,而2是直接使用mysql提示的內置函數鏈接資料庫,原則上用1更好一點,提供了對象,日後也方便修改移值。
第二個問題:原因是你沒有把mysql類放道對應目錄里,所以你實例化時,他就報錯,說找不到這個類。
⑺ PHP訪問MYSQL資料庫封裝類(附函數說明)
復制代碼
代碼如下:
<?php
/*
MYSQL
資料庫訪問封裝類
MYSQL
數據訪問方式,php4支持以mysql_開頭的過程訪問方式,php5開始支持以mysqli_開頭的過程和mysqli面向對象
訪問方式,本封裝類以mysql_封裝
數據訪問的一般流程:
1,連接資料庫
mysql_connect
or
mysql_pconnect
2,選擇資料庫
mysql_select_db
3,執行SQL查詢
mysql_query
4,處理返回的數據
mysql_fetch_array
mysql_num_rows
mysql_fetch_assoc
mysql_fetch_row
etc
*/
class
db_mysql
{
var
$querynum
=
0
;
//當前頁面進程查詢資料庫的次數
var
$dblink
;
//資料庫連接資源
//鏈接資料庫
function
connect($dbhost,$dbuser,$dbpw,$dbname='',$dbcharset='utf-8',$pconnect=0
,
$halt=true)
{
$func
=
empty($pconnect)
?
'mysql_connect'
:
'mysql_pconnect'
;
$this->dblink
=
@$func($dbhost,$dbuser,$dbpw)
;
if
($halt
&&
!$this->dblink)
{
$this->halt("無法鏈接資料庫!");
}
//設置查詢字元集
mysql_query("SET
character_set_connection={$dbcharset},character_set_results={$dbcharset},character_set_client=binary",$this->dblink)
;
//選擇資料庫
$dbname
&&
@mysql_select_db($dbname,$this->dblink)
;
}
//選擇資料庫
function
select_db($dbname)
{
return
mysql_select_db($dbname,$this->dblink);
}
//執行SQL查詢
function
query($sql)
{
$this->querynum++
;
return
mysql_query($sql,$this->dblink)
;
}
//返回最近一次與連接句柄關聯的INSERT,UPDATE
或DELETE
查詢所影響的記錄行數
function
affected_rows()
{
return
mysql_affected_rows($this->dblink)
;
}
//取得結果集中行的數目,只對select查詢的結果集有效
function
num_rows($result)
{
return
mysql_num_rows($result)
;
}
//獲得單格的查詢結果
function
result($result,$row=0)
{
return
mysql_result($result,$row)
;
}
//取得上一步
INSERT
操作產生的
ID,只對表有AUTO_INCREMENT
ID的操作有效
function
insert_id()
{
return
($id
=
mysql_insert_id($this->dblink))
>=
0
?
$id
:
$this->result($this->query("SELECT
last_insert_id()"),
0);
}
//從結果集提取當前行,以數字為key表示的關聯數組形式返回
function
fetch_row($result)
{
return
mysql_fetch_row($result)
;
}
//從結果集提取當前行,以欄位名為key表示的關聯數組形式返回
function
fetch_assoc($result)
{
return
mysql_fetch_assoc($result);
}
//從結果集提取當前行,以欄位名和數字為key表示的關聯數組形式返回
function
fetch_array($result)
{
return
mysql_fetch_array($result);
}
//關閉鏈接
function
close()
{
return
mysql_close($this->dblink)
;
}
//輸出簡單的錯誤html提示信息並終止程序
function
halt($msg)
{
$message
=
"<html>\n<head>\n"
;
$message
.=
"<meta
content='text/html;charset=gb2312'>\n"
;
$message
.=
"</head>\n"
;
$message
.=
"<body>\n"
;
$message
.=
"資料庫出錯:".htmlspecialchars($msg)."\n"
;
$message
.=
"</body>\n"
;
$message
.=
"</html>"
;
echo
$message
;
exit
;
}
}
?>
⑻ 如何正確理解PHP獲取顯示資料庫數據函數
1、PHP獲取顯示資料庫數據函數之 mysql_result()
mixed mysql_result(resource result_set, int row [,mixed field])
從result_set 的指定row 中獲取一個field 的數據. 簡單但是效率低.
舉例:
$link1=@mysql_connect("server1",
"webuser","password")
ordie("Couldnotconnect
tomysqlserver!");
@mysql_select_db("company")
ordie("Couldnotselectdatabase!");
$query="selectid,name
fromproctorderbyname";
$result=mysql_query($query);
$id=mysql_result($result,0,"id");
$name=mysql_result($result,0,"name");
mysql_close();
注意,上述代碼只是輸出結果集中的第一條數據的欄位值,如果要輸出所有記錄,需要循環處理.
for($i=0;$i<=mysql_num_rows($result);$i++)
{
$id=mysql_result($result,0,"id");
$name=mysql_result($result,0,"name");
echo"Proct:$name($id)";
}
注意,如果查詢欄位名是別名,則mysql_result中就使用別名.
2、PHP獲取顯示資料庫數據函數之mysql_fetch_row()
array mysql_fetch_row(resource result_set)
從result_set中獲取整行,把數據放入數組中.
舉例(注意和list 的巧妙配合):
$query="selectid,
namefromproctorderbyname";
$result=mysql_query($query);
while(list($id,$name)
=mysql_fetch_row($result)){
echo"Proct:$name($id)";
}
3、PHP獲取顯示資料庫數據函數之mysql_fetch_array()
array mysql_fetch_array(resource result_set [,int result_type])
mysql_fetch_row()的增強版.
將result_set的每一行獲取為一個關聯數組或/和數值索引數組.
默認獲取兩種數組,result_type可以設置:
MYSQL_ASSOC:返回關聯數組,欄位名=>欄位值
MYSQL_NUM:返回數值索引數組.
MYSQL_BOTH:獲取兩種數組.因此每個欄位可以按索引偏移引用,也可以按欄位名引用.
舉例:
$query="selectid,
namefromproctorderbyname";
$result=mysql_query($query);
while($row=mysql_fetch_array
($result,MYSQL_BOTH)){
$name=$row['name'];
//或者$name=$row[1];
$name=$row['id'];
//或者$name=$row[0];
echo"Proct:$name($id)";
}
4、PHP獲取顯示資料庫數據函數之mysql_fetch_assoc()
array mysql_fetch_assoc(resource result_set)
相當於 mysql_fetch_array($result, MYSQL_ASSOC)
5、PHP獲取顯示資料庫數據函數之mysql_fetch_object()
object mysql_fetch_object(resource result_set)
和mysql_fetch_array()功能一樣,不過返回的不是數組,而是一個對象.
舉例:
$query="selectid,name
fromproctorderbyname";
$result=mysql_query($query);
while($row=mysql_fetch_object
($result)){
$name=$row->name;
$name=$row->id;
echo"Proct:$name($id)";
}
以上這些函數就是PHP獲取顯示資料庫數據函數的全部總結。
⑼ PHP中的一些MySQL函數
mysql可通過兩種方式通過php與web相連,一種通過php的mysql相關函數,相關函數如下:
MYSQL函數
mysql_affected_rows:
得到
MySQL
最後操作影響的列數目。
mysql_close:
關閉
MySQL
伺服器連線。
mysql_connect:
開啟
MySQL
伺服器連線。
mysql_create_db:
建立一個
MySQL
新資料庫。
mysql_data_seek:
移動內部傳回指標。
mysql_db_query:
送查詢字串
(query)
到
MySQL
資料庫。
mysql_drop_db:
移除資料庫。
mysql_errno:
傳回錯誤訊息代碼。
mysql_error:
傳回錯誤訊息。
mysql_fetch_array:
傳回陣列資料。
mysql_fetch_field:
取得欄位資訊。
mysql_fetch_lengths:
傳回單列各欄資料最大長度。
mysql_fetch_object:
傳回物件資料。
mysql_fetch_row:
傳回單列的各欄位。
mysql_field_name:
傳回指定欄位的名稱。
mysql_field_seek:
設定指標到傳回值的某欄位。
mysql_field_table:
獲得目前欄位的資料表
(table)
名稱。
mysql_field_type:
獲得目前欄位的型態。
mysql_field_flags:
獲得目前欄位的旗標。
mysql_field_len:
獲得目前欄位的長度。
mysql_free_result:
釋放傳回佔用記憶體。
mysql_insert_id:
傳回最後一次使用
INSERT
指令的
ID。
mysql_list_fields:
列出指定資料表的欄位
(field)。
mysql_list_dbs:
列出
MySQL
伺服器可用的資料庫
(database)。
mysql_list_tables:
列出指定資料庫的資料表
(table)。
mysql_num_fields:
取得傳回欄位的數目。
mysql_num_rows:
取得傳回列的數目。
mysql_pconnect:
開啟
MySQL
伺服器長期連線。
mysql_query:
送出一個
query
字串。
mysql_result:
取得查詢
(query)
的結果。
mysql_select_db:
選擇一個資料庫。
mysql_tablename:
取得資料表名稱。
⑽ 在PHP的mysqli擴展中,連接資料庫的函數是什麼
mysqli_connect,手冊上的例子如下圖: