php操作mysql步驟:

成都創(chuàng)新互聯(lián)公司專注于仁布企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,電子商務(wù)商城網(wǎng)站建設(shè)。仁布網(wǎng)站建設(shè)公司,為仁布等地區(qū)提供建站服務(wù)。全流程按需求定制開發(fā),專業(yè)設(shè)計,全程項目跟蹤,成都創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
1.$connect=mysql_connect('localhost','root','123456')
or
die('數(shù)據(jù)庫連接失敗。'mysql_error());鏈接mysql。
2.mysql_select_db('database',$connect)選擇鏈接的數(shù)據(jù)庫。
3.mysql_query('Set
names
gb2312');$sql
=
"select
*
from
blog_article";準備要查詢的數(shù)據(jù)。
4.$datas
=
mysql_query($sql);執(zhí)行sql查詢。
5.$data
=
mysql_fetch_assoc($datas)得到查詢到的緩存在內(nèi)存中的一條數(shù)據(jù)。
6.print_r($data);
相同點:三個函數(shù)都是返回數(shù)據(jù)庫中查詢到的一行數(shù)據(jù)(說的再清楚點就是一條數(shù)據(jù))。
不同點:mysql_fetch_assoc()用的是數(shù)據(jù)庫中相應(yīng)的字段名作為的key值(也就是數(shù)組下標)
如:filed['id']=1;
mysql_fetch_row()用的是自動生成的數(shù)字(從0開始依次生成)作為的key值(也就是數(shù)組下標)
如:filed[0]=1;
mysql_fetch_array()用的是自動生成的數(shù)字(從0開始依次生成)作為的key值(也就是數(shù)組下標),而且它還同時生成數(shù)據(jù)庫中相應(yīng)的字段名作為的key值(也就是數(shù)組下標)
如:
filed[0]=1,filed['id']=1;也就是說,mysql_fetch_array()將mysql_fetch_assoc()和mysql_fetch_row()查詢到的結(jié)果合為了一體了。
mysql_fetch_object()與mysql_fetch_assoc()差不多。只是mysql_fetch_assoc()返回的是數(shù)組。mysql_fetch_object()返回的是object對象。
mysql_insert_id() 取得上一步
INSERT
操作產(chǎn)生的
ID。
mysql_result()
函數(shù)返回結(jié)果集中一個字段的值。
mysql_num_fields()
函數(shù)返回結(jié)果集中字段的數(shù)目。
mysql_affected_rows();返回前一次
MySQL
操作所影響的記錄行數(shù)。
mysql_num_rows(mysql_query($sql))獲得結(jié)果集中行的數(shù)目。
mysql_pconnect()
函數(shù)打開一個到
MySQL
服務(wù)器的持久連接。
mysql_pconnect()
和
mysql_connect()
非常相似,但有兩個主要區(qū)別:
1.
當連接的時候本函數(shù)將先嘗試尋找一個在同一個主機上用同樣的用戶名和密碼已經(jīng)打開的(持久)連接,如果找到,則返回此連接標識而不打開新連接。
2.
其次,當腳本執(zhí)行完畢后到
SQL
服務(wù)器的連接不會被關(guān)閉,此連接將保持打開以備以后使用(mysql_close()
不會關(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)會緩存查詢的結(jié)果。
mysql_close();關(guān)閉mysql的最近的鏈接。
mysql_field_flags(mysql_query($sql),6)返回第六個字段的表屬性輸出如:not_null
primary_key
auto_increment
。
mysql_fetch_lengths(mysql_query($sql))返回該條數(shù)據(jù)的所有字段的每個字段的長度。返回的是一個數(shù)字組成的數(shù)組。
mysql_field_name(mysql_query($sql),3)返回第三個字段的字段名。
mysql_field_table(mysql_query($sql),0)返回指定字段所在的表名。
mysql_free_result(mysql_query($sql))
函數(shù)釋放結(jié)果內(nèi)存。
mysql_get_client_info()
函數(shù)返回
MySQL
客戶端信息。
mysql_get_host_info()
取得
MySQL
主機信息。
?php
header('content-type:text/html;charset=utf-8');
$dsn = 'mysql:dbname=m-test;host=localhost';
$user = 'root';//數(shù)據(jù)庫用戶名
$passwd = '';//數(shù)據(jù)庫密碼
try {
$pdo = new pdo($dsn, $user, $passwd);
$pdo-query('set names utf8');//設(shè)置字符集
$result = $pdo-query('select * from user');//查詢數(shù)據(jù)庫
foreach ($result as $row) {
echo $row['id'];//輸出 id 號
echo ':';
echo $row['name'];//輸出 name
echo 'br /';
}
} catch (pdoexception $e) {
echo $e-getmessage();//錯誤信息
}
?
建議1:查找run函數(shù)是否支持變量
建議2:如果你echo出來的數(shù)據(jù)庫語句就是select * from schoolactivity order by CreateTime DESC limit 0,3
,那么基本不會出錯,問題是:你是不是有個中文半角符號或者中文空格在SQL語句中?
建議3:你是否確定$min 和$max的值一定存在或者不違反數(shù)據(jù)庫中應(yīng)該得到的條目?比如你數(shù)據(jù)庫中只有3條數(shù)據(jù),但是你的$min 去到了4,根本沒有數(shù)據(jù)存在
建議4:修改下run函數(shù)
我給你寫了一寫,你看一下,行不行
select *
from category cg, commodity cd, photo ph
where cg.categoryid = cd.categoryid
and ph.commodityid = cd.commodityid
order by commodityid desc
用別名 , 比如 a表 有 c字段, b表也有 c字段, field('a.c as xx'), field('b.c as oo'), 至于具體join()方法你自己寫吧, 方法就是用別名, 或者加上表名,這樣就不會產(chǎn)生歧義
thinkphp如何查詢數(shù)據(jù)庫?
數(shù)據(jù)庫查詢
ThinkPHP內(nèi)置了非常靈活的查詢方法,可以快速的進行數(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
如果進行多字段查詢,那么字段之間的默認邏輯關(guān)系是 邏輯與 AND,但是用下面的規(guī)則可以更改默認的邏輯判斷,通過使用 _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ù)組方式為例來講解具體的查詢語言用法。
表達式查詢
上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,并且可以用于數(shù)組或者對象方式的查詢(下面僅以數(shù)組方式為例說明),查詢表達式的使用格式:
1
$map['字段名'] = array('表達式','查詢條件');
表達式不分大小寫,支持的查詢表達式有下面幾種,分別表示的含義是:
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ù)庫的詳細內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
                文章題目:php數(shù)據(jù)庫內(nèi)聯(lián)查詢 php實現(xiàn)數(shù)據(jù)庫查詢
                
                網(wǎng)站URL:http://chinadenli.net/article38/hihdsp.html
            
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、云服務(wù)器、網(wǎng)站設(shè)計、定制網(wǎng)站、ChatGPT、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
