thinkphp提供了模型和資料庫操作資料庫表格數據,但是項目中遇到一個問題是一旦數據表欄位是中文時,就會報錯,"不支持的數據表達式"。

這時怎麼辦呢?我通過查找資料基本上有修改thinkphp資料庫驅動的,但是沒成功。我這裡介紹的辦法是使用原生查詢語句進行查詢即可。
有朋友問了,怎麼原生查詢呢?使用thinkphp的資料庫章節的query語句進行原生查詢.具體如何做呢.請看下邊的文檔:
Db 類支持原生 SQL 查詢操作,主要包括下面兩個方法:query 方法query 方法用於執行 SQL 查詢操作,如果數據非法或者查詢錯誤則返回false,否則返回查詢結果數據集(同 select 方法)。使用示例:Db::query("select * from think_user where status=1");如果你當前採用了分布式資料庫,並且設置了讀寫分離的話,query方法始終是在讀伺服器執行,因此query方法對應的都是讀操作,而不管你的SQL語句是什麼。execute 方法execute 用於更新和寫入數據的sql操作,如果數據非法或者查詢錯誤則返回 false ,否則返回影響的記錄數。使用示例:Db::execute("update think_user set name='thinkphp' where status=1");

我在項目裡的代碼就需要改成這樣:
$list = Db::query("select * from think_chuchai where $shaixuanziduan[0]='$shaixuanneirong'");
或者
$Chuchai=new Chuchai();//Chuchai是定義的模型
$list = $Chuchai->query("select * from think_chuchai where $shaixuanziduan[0]='$shaixuanneirong'");
以上2種方法都可以.一個是使用了think PHP提供的DB類,需要引用下面的語句:
use think\db;
後者使用的是模型實例化.
其中
$shaixuanziduan= request()->param('shaixuanziduan');$shaixuanneirong=request()->param('shaixuanneirong');
都是post過來的,$shaixuanziduan[0]是中文欄位,$shaixuanneirong是欄位內容.
經過以上就可以完美的解決了資料庫表欄位是中文的問題了.