thinkphp如何查詢數(shù)據(jù)庫?
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站建設(shè)、成都網(wǎng)站制作與策劃設(shè)計,譙城網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:譙城等地區(qū)。譙城做網(wǎng)站價格咨詢:18982081108
數(shù)據(jù)庫查詢
ThinkPHP內(nèi)置了非常靈活的查詢方法,可以快速的進(jìn)行數(shù)據(jù)查詢操作。
查詢條件可以用于CURD等任何操作,作為where方法的參數(shù)傳入即可。
ThinkPHP可以支持直接使用字符串作為查詢條件,但是大多數(shù)情況推薦使用索引數(shù)組或者對象來作為查詢條件,因為會更加安全。
查詢方式
一、使用字符串作為查詢條件
這是最傳統(tǒng)的方式,但是安全性不高,例如:
1
2
$User = M("User"); // 實例化User對象
$User-where('type=1 AND status=1')-select();
最后生成的SQL語句是
1
SELECT * FROM think_user WHERE type=1 AND status=1
二、使用數(shù)組作為查詢條件
1
2
3
4
5
$User = M("User"); // 實例化User對象
$condition['name'] = 'thinkphp';
$condition['status'] = 1;
// 把查詢條件傳入查詢方法
$User-where($condition)-select();
最后生成的SQL語句是
1
SELECT * FROM think_user WHERE 'name'='thinkphp' AND status=1
如果進(jìn)行多字段查詢,那么字段之間的默認(rèn)邏輯關(guān)系是 邏輯與 AND,但是用下面的規(guī)則可以更改默認(rèn)的邏輯判斷,通過使用 _logic 定義查詢邏輯:
1
2
3
4
5
6
$User = M("User"); // 實例化User對象
$condition['name'] = 'thinkphp';
$condition['account'] = 'thinkphp';
$condition['_logic'] = 'OR'; //定義查詢邏輯
// 把查詢條件傳入查詢方法
$User-where($condition)-select();
最后生成的SQL語句是
1
SELECT * FROM think_user WHERE 'name'='thinkphp' OR `account`='thinkphp'
三、使用對象方式來查詢 (這里以stdClass內(nèi)置對象為例)
1
2
3
4
5
6
$User = M("User"); // 實例化User對象
// 定義查詢條件
$condition = new stdClass();
$condition-name = 'thinkphp';
$condition-status= 1;
$User-where($condition)-select();
最后生成的SQL語句和上面一樣
1
SELECT * FROM think_user WHERE `name`='thinkphp' AND status=1
使用對象方式查詢和使用數(shù)組查詢的效果是相同的,并且是可以互換的,大多數(shù)情況下,我們建議采用數(shù)組方式更加高效,后面我們會以數(shù)組方式為例來講解具體的查詢語言用法。
表達(dá)式查詢
上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達(dá)式支持更多的SQL查詢語法,并且可以用于數(shù)組或者對象方式的查詢(下面僅以數(shù)組方式為例說明),查詢表達(dá)式的使用格式:
1
$map['字段名'] = array('表達(dá)式','查詢條件');
表達(dá)式不分大小寫,支持的查詢表達(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%' 模糊查詢
$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')
本文來自ThinkPHP框架技術(shù)文章欄目:
以上就是thinkphp如何查詢數(shù)據(jù)庫的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
$data=array();
$sql = "show fields from table";//最主要是這SQL得到全表信息
$query = mysql_query($sql);
while($row=mysql_fetch_array($query)){
$data[]=$row['Field'];
}
$data數(shù)組就是字段名,count($data)就是字段數(shù)。
親,你的想法有問題,這是不符合要求的。
數(shù)據(jù)庫中有很多的表,表中有字段。因此你不可能查詢數(shù)據(jù)庫中的id和news,而是只能在特定的表上查詢。同時sql語法也要求
select
fields
from
table_name而不是db_name哦。
舉例來說,保存新聞的表名字是news,
位于數(shù)據(jù)庫
my_test_db中,那么應(yīng)該
$con = mysql_connect("127.0.0.1", "123", "123");
mysql_select_db('my_test_db', $con);
$sql = "select id, news from news";后面的代碼就一樣了
?php$host_name="服務(wù)器名"; //服務(wù)器名$host_user="用戶名"; //連接服務(wù)器的用戶名$host_pass="服務(wù)器的密碼"; //連接服務(wù)器的密碼$db_name="數(shù)據(jù)庫名"; //服務(wù)器上的可用數(shù)據(jù)庫$my_conn=mysql_connect($host_name,$host_user,$host_pass); //連接服務(wù)器mysql_select_db($db_name,$my_conn); //選擇操作的數(shù)據(jù)庫mysql_query("SET NAMES utf-s"); //設(shè)置編碼$sql="select tel from members where username=1234";$query=mysql_query($sql,$my_conn);while($row=mysql_fetch_array($query)){ echo $row[0];}?
mysql_list_tables 在php5應(yīng)該支持的,再說,向下兼容的啊幫助文檔:例 1397. mysql_list_tables() 例子/b?php
$dbname = 'mysql_dbname';
if (!mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
print 'Could not connect to mysql';
exit;
}
$result = mysql_list_tables($dbname);
if (!$result) {
print "DB Error, could not list tables\n";
print 'MySQL Error: ' . mysql_error();
exit;
}
while ($row = mysql_fetch_row($result)) {
print "Table: $row[0]\n";
}
mysql_free_result($result);
?
每個表都應(yīng)該有區(qū)分
比如結(jié)尾_1
_2
_3
,循環(huán)sql
替換表結(jié)尾的表示,
規(guī)律看你的表名了