thinkphp如何查詢(xún)數(shù)據(jù)庫(kù)?
創(chuàng)新互聯(lián)公司專(zhuān)業(yè)提供棕樹(shù)數(shù)據(jù)中心服務(wù),為用戶(hù)提供五星數(shù)據(jù)中心、電信、雙線接入解決方案,用戶(hù)可自行在線購(gòu)買(mǎi)棕樹(shù)數(shù)據(jù)中心服務(wù),并享受7*24小時(shí)金牌售后服務(wù)。
數(shù)據(jù)庫(kù)查詢(xún)
ThinkPHP內(nèi)置了非常靈活的查詢(xún)方法,可以快速的進(jìn)行數(shù)據(jù)查詢(xún)操作。
查詢(xún)條件可以用于CURD等任何操作,作為where方法的參數(shù)傳入即可。
ThinkPHP可以支持直接使用字符串作為查詢(xún)條件,但是大多數(shù)情況推薦使用索引數(shù)組或者對(duì)象來(lái)作為查詢(xún)條件,因?yàn)闀?huì)更加安全。
查詢(xún)方式
一、使用字符串作為查詢(xún)條件
這是最傳統(tǒng)的方式,但是安全性不高,例如:
1
2
$User = M("User"); // 實(shí)例化User對(duì)象
$User-where('type=1 AND status=1')-select();
最后生成的SQL語(yǔ)句是
1
SELECT * FROM think_user WHERE type=1 AND status=1
二、使用數(shù)組作為查詢(xún)條件
1
2
3
4
5
$User = M("User"); // 實(shí)例化User對(duì)象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;
// 把查詢(xún)條件傳入查詢(xún)方法
$User-where($condition)-select();
最后生成的SQL語(yǔ)句是
1
SELECT * FROM think_user WHERE 'name'='thinkphp' AND status=1
如果進(jìn)行多字段查詢(xún),那么字段之間的默認(rèn)邏輯關(guān)系是 邏輯與 AND,但是用下面的規(guī)則可以更改默認(rèn)的邏輯判斷,通過(guò)使用 _logic 定義查詢(xún)邏輯:
1
2
3
4
5
6
$User = M("User"); // 實(shí)例化User對(duì)象
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR'; //定義查詢(xún)邏輯
// 把查詢(xún)條件傳入查詢(xún)方法
$User-where($condition)-select();
最后生成的SQL語(yǔ)句是
1
SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'
三、使用對(duì)象方式來(lái)查詢(xún) (這里以stdClass內(nèi)置對(duì)象為例)
1
2
3
4
5
6
$User = M("User"); // 實(shí)例化User對(duì)象
// 定義查詢(xún)條件
$condition = new stdClass();
$condition-name = 'thinkphp';
$condition-status= 1;
$User-where($condition)-select();
最后生成的SQL語(yǔ)句和上面一樣
1
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
使用對(duì)象方式查詢(xún)和使用數(shù)組查詢(xún)的效果是相同的,并且是可以互換的,大多數(shù)情況下,我們建議采用數(shù)組方式更加高效,后面我們會(huì)以數(shù)組方式為例來(lái)講解具體的查詢(xún)語(yǔ)言用法。
表達(dá)式查詢(xún)
上面的查詢(xún)條件僅僅是一個(gè)簡(jiǎn)單的相等判斷,可以使用查詢(xún)表達(dá)式支持更多的SQL查詢(xún)語(yǔ)法,并且可以用于數(shù)組或者對(duì)象方式的查詢(xún)(下面僅以數(shù)組方式為例說(shuō)明),查詢(xún)表達(dá)式的使用格式:
1
$map['字段名'] = array('表達(dá)式','查詢(xún)條件');
表達(dá)式不分大小寫(xiě),支持的查詢(xún)表達(dá)式有下面幾種,分別表示的含義是:
1
2
3
4
$map['id']? = array('eq',100);? id = 100;
$map['id']? = array('egt',100);id = 100
$map['name'] = array('like','thinkphp%'); name like 'thinkphp%' 模糊查詢(xún)
$map['a'] =array('like',array('%thinkphp%','%tp'),'OR');$map['b'] =array('notlike',array('%thinkphp%','%tp'),'AND'); (a like '%thinkphp%' OR a like '%tp') AND (b not like '%thinkphp%' AND b not like '%tp')
本文來(lái)自ThinkPHP框架技術(shù)文章欄目:
以上就是thinkphp如何查詢(xún)數(shù)據(jù)庫(kù)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!
創(chuàng)建數(shù)據(jù)庫(kù)
選擇開(kāi)始菜單中→程序→【Management SQL Server 2008】→【SQL Server Management Studio】命令,打開(kāi)【SQL Server Management Studio】窗口,并使用Windows或 SQL Server身份驗(yàn)證建立連接。
在【對(duì)象資源管理器】窗口中展開(kāi)服務(wù)器,然后選擇【數(shù)據(jù)庫(kù)】節(jié)點(diǎn)
右鍵單擊【數(shù)據(jù)庫(kù)】節(jié)點(diǎn),從彈出來(lái)的快捷菜單中選擇【新建數(shù)據(jù)庫(kù)】命令。
執(zhí)行上述操作后,會(huì)彈出【新建數(shù)據(jù)庫(kù)】對(duì)話框。在對(duì)話框、左側(cè)有3個(gè)選項(xiàng),分別是【常規(guī)】、【選項(xiàng)】和【文件組】。完成這三個(gè)選項(xiàng)中的設(shè)置會(huì)后,就完成了數(shù)據(jù)庫(kù)的創(chuàng)建工作,
在【數(shù)據(jù)庫(kù)名稱(chēng)】文本框中輸入要新建數(shù)據(jù)庫(kù)的名稱(chēng)。例如,這里以“新建的數(shù)據(jù)庫(kù)”。
在【所有者】文本框中輸入新建數(shù)據(jù)庫(kù)的所有者,如sa。根據(jù)數(shù)據(jù)庫(kù)的使用情況,選擇啟用或者禁用【使用全文索引】復(fù)選框。
在【數(shù)據(jù)庫(kù)文件】列表中包括兩行,一行是數(shù)據(jù)庫(kù)文件,而另一行是日記文件。通過(guò)單擊下面的【添加】、【刪除】按鈕添加或刪除數(shù)據(jù)庫(kù)文件。
切換到【選項(xiàng)頁(yè)】、在這里可以設(shè)置數(shù)據(jù)庫(kù)的排序規(guī)則、恢復(fù)模式、兼容級(jí)別和其他屬性。
切換到【文件組】頁(yè),在這里可以添加或刪除文件組。
完成以上操作后,單擊【確定】按鈕關(guān)閉【新建數(shù)據(jù)庫(kù)】對(duì)話框。至此“新建的數(shù)據(jù)”數(shù)據(jù)庫(kù)創(chuàng)建成功。新建的數(shù)據(jù)庫(kù)可以再【對(duì)象資源管理器】窗口看到。
php操作mysql步驟:
1.$connect=mysql_connect('localhost','root','123456')
or
die('數(shù)據(jù)庫(kù)連接失敗。'mysql_error());鏈接mysql。
2.mysql_select_db('database',$connect)選擇鏈接的數(shù)據(jù)庫(kù)。
3.mysql_query('Set
names
gb2312');$sql
=
"select
*
from
blog_article";準(zhǔn)備要查詢(xún)的數(shù)據(jù)。
4.$datas
=
mysql_query($sql);執(zhí)行sql查詢(xún)。
5.$data
=
mysql_fetch_assoc($datas)得到查詢(xún)到的緩存在內(nèi)存中的一條數(shù)據(jù)。
6.print_r($data);
相同點(diǎn):三個(gè)函數(shù)都是返回?cái)?shù)據(jù)庫(kù)中查詢(xún)到的一行數(shù)據(jù)(說(shuō)的再清楚點(diǎn)就是一條數(shù)據(jù))。
不同點(diǎn):mysql_fetch_assoc()用的是數(shù)據(jù)庫(kù)中相應(yīng)的字段名作為的key值(也就是數(shù)組下標(biāo))
如:filed['id']=1;
mysql_fetch_row()用的是自動(dòng)生成的數(shù)字(從0開(kāi)始依次生成)作為的key值(也就是數(shù)組下標(biāo))
如:filed[0]=1;
mysql_fetch_array()用的是自動(dòng)生成的數(shù)字(從0開(kāi)始依次生成)作為的key值(也就是數(shù)組下標(biāo)),而且它還同時(shí)生成數(shù)據(jù)庫(kù)中相應(yīng)的字段名作為的key值(也就是數(shù)組下標(biāo))
如:
filed[0]=1,filed['id']=1;也就是說(shuō),mysql_fetch_array()將mysql_fetch_assoc()和mysql_fetch_row()查詢(xún)到的結(jié)果合為了一體了。
mysql_fetch_object()與mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是數(shù)組。mysql_fetch_object()返回的是object對(duì)象。
mysql_insert_id() 取得上一步
INSERT
操作產(chǎn)生的
ID。
mysql_result()
函數(shù)返回結(jié)果集中一個(gè)字段的值。
mysql_num_fields()
函數(shù)返回結(jié)果集中字段的數(shù)目。
mysql_affected_rows();返回前一次
MySQL
操作所影響的記錄行數(shù)。
mysql_num_rows(mysql_query($sql))獲得結(jié)果集中行的數(shù)目。
mysql_pconnect()
函數(shù)打開(kāi)一個(gè)到
MySQL
服務(wù)器的持久連接。
mysql_pconnect()
和
mysql_connect()
非常相似,但有兩個(gè)主要區(qū)別:
1.
當(dāng)連接的時(shí)候本函數(shù)將先嘗試尋找一個(gè)在同一個(gè)主機(jī)上用同樣的用戶(hù)名和密碼已經(jīng)打開(kāi)的(持久)連接,如果找到,則返回此連接標(biāo)識(shí)而不打開(kāi)新連接。
2.
其次,當(dāng)腳本執(zhí)行完畢后到
SQL
服務(wù)器的連接不會(huì)被關(guān)閉,此連接將保持打開(kāi)以備以后使用(mysql_close()
不會(huì)關(guān)閉由
mysql_pconnect()
建立的連接)。
mysql_data_seek(mysql_query($sql),8);獲得結(jié)果集中的第8條數(shù)據(jù)。(mysql_num_rows(mysql_query($sql))和mysql_data_seek(mysql_query($sql),8)在mysql_unbuffered_query($sql)不可以使用。)
mysql_unbuffered_query($sql)和mysql_query($sql)效果差不多,但是
mysql_unbuffered_query($sql)不緩存。mysql_query($sql)會(huì)緩存查詢(xún)的結(jié)果。
mysql_close();關(guān)閉mysql的最近的鏈接。
mysql_field_flags(mysql_query($sql),6)返回第六個(gè)字段的表屬性輸出如:not_null
primary_key
auto_increment
。
mysql_fetch_lengths(mysql_query($sql))返回該條數(shù)據(jù)的所有字段的每個(gè)字段的長(zhǎng)度。返回的是一個(gè)數(shù)字組成的數(shù)組。
mysql_field_name(mysql_query($sql),3)返回第三個(gè)字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql))
函數(shù)釋放結(jié)果內(nèi)存。
mysql_get_client_info()
函數(shù)返回
MySQL
客戶(hù)端信息。
mysql_get_host_info()
取得
MySQL
主機(jī)信息。
//1.連接數(shù)據(jù)庫(kù)
$link?=?@mysql_connect('localhost','root','123456');
//2.判斷是否連接成功
if(!$link)?exit('數(shù)據(jù)庫(kù)連接失敗');
//3.選擇數(shù)據(jù)庫(kù)
mysql_select_db('mydatabase');
//4.設(shè)置字符集??utf8
mysql_set_charset('utf8');
//5.準(zhǔn)備一個(gè)SQL語(yǔ)句
$sql?=?'select?*?from?user';
//6.發(fā)送SQL語(yǔ)句
$result?=?mysql_query($sql);
//7.判斷并處理返回結(jié)果
if($result){
while($row?=?mysql_fetch_array($result)){
$list[]?=?$row;
}
echo?"pre";
print_r($list);
echo?"/pre";
}
//8.釋放資源
mysql_free_result($result);???//查詢(xún)操作才需要釋放結(jié)果集
mysql_close();