當前位置:首頁 » 數據倉庫 » php資料庫中文查詢
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

php資料庫中文查詢

發布時間: 2022-12-23 23:36:23

A. thinkphp 資料庫查詢怎麼查

thinkphp如何查詢資料庫?

資料庫查詢

ThinkPHP內置了非常靈活的查詢方法,可以快速的進行數據查詢操作。

查詢條件可以用於CURD等任何操作,作為where方法的參數傳入即可。

ThinkPHP可以支持直接使用字元串作為查詢條件,但是大多數情況推薦使用索引數組或者對象來作為查詢條件,因為會更加安全。

查詢方式

一、使用字元串作為查詢條件

這是最傳統的方式,但是安全性不高,例如:

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

二、使用數組作為查詢條件

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

如果進行多欄位查詢,那麼欄位之間的默認邏輯關系是 邏輯與 AND,但是用下面的規則可以更改默認的邏輯判斷,通過使用 _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內置對象為例)

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

使用對象方式查詢和使用數組查詢的效果是相同的,並且是可以互換的,大多數情況下,我們建議採用數組方式更加高效,後面我們會以數組方式為例來講解具體的查詢語言用法。

表達式查詢

上面的查詢條件僅僅是一個簡單的相等判斷,可以使用查詢表達式支持更多的SQL查詢語法,並且可以用於數組或者對象方式的查詢(下面僅以數組方式為例說明),查詢表達式的使用格式:

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框架技術文章欄目:http://www.php.cn/phpkj/thinkphp/

以上就是thinkphp如何查詢資料庫的詳細內容,更多請關注php中文網其它相關文章!

B. php操作資料庫WHERE語句查詢中文報錯,無法讀取數據

MYSQL的欄位名轉義使用返引號`,不是單引號,注意上面代碼的下面部分:
WHERE '賬戶'='中文'; //查詢中文字報錯,數字字母都能正常查詢
【賬戶】是欄位名,應使用反引號:
`賬戶`
【中文】是常量,單雙引號都可以,但是要注意你現在的語句是在單引號裡面,因此應該轉義或者使用雙引號,這部分可以修改為:

WHERE 賬戶="中文"';
另外,如果只是查詢中文內容才報錯,可能你粘貼代碼和原始代碼有區別,原始代碼沒有把欄位名放在單引號裡面,否則是查不到內容的。查詢中文內容報錯,一般是中文的編碼和網頁文件的編碼、以及資料庫的編碼不一致,你這來資料庫是UTF8,那麼PHP腳本文件、瀏覽器網頁都必須使用UTF-8

C. 用php在mysql資料庫內查詢中文出錯(編碼問題)

資料庫的編碼是 gbk 的,在查詢的時候把中文(utf-8)轉換成 gbk編碼就可以了
$nickname=iconv('utf-8','gbk//TRANSLIT',$nickname);
轉換後才執行查詢

D. php 向資料庫發送中文字元無法查詢

你的問題可能是資料庫連接時未指定字元集:$conn->query("set names utf8");

詳細如下:

將中文字元轉換一下,可能你的網頁編碼是ansi非utf-8的:

$w=iconv("gb2312","utf-8",$w);

不過我不確定這樣做你能否成功。關於字元有以下幾點你看下:

  1. 資料庫連接時: $conn->query("set names gbk");

  2. 資料庫的字元集:建議建立資料庫時就指定字元集,比如gbk或者utf-8,這樣你就沒必要為單獨的表或者欄位指定字元集

  3. 網頁字元:<META CONTENT="text/html; charset=gbk" HTTP-EQUIV="Content-Type" />

保持著三者使用的字元集一樣,基本能解決你的問題。

當然,在使用ajax時。js傳遞過來的是utf-8,如果你的php文件和資料庫使用的是中文字元集如gbk,gb2312,那麼就需要對該值用iconv函數轉換下字元集,如:$w=iconv("utf-8","gb2312",$w);

總之,需要這幾塊的字元集保持一致。