㈠ thinkphp怎麼列印sql語句
thinkphp的sql語句的應用:
[SQL]SHOWCOLUMNSFROM`think_action`[RunTime:0.001339s]
[EXPLAIN:array('id'=>'1','select_type'=>'SIMPLE','table'=>'think_action','partitions'
=>NULL,'type'=>'ALL','possible_keys'=>NULL,'key'=>NULL,'key_len'=>NULL,'ref'
=>NULL,'rows'=>'82','filtered'=>'100.00','extra'=>NULL,)]
[SQL]SELECT*FROM`think_action`LIMIT1[RunTime:0.000539s]
(1)thinkphp查詢sql語句擴展閱讀:
sql的應用原則:
在關系資料庫實現過程中,第一步是建立關系模式,定義基本表的結構,即該關系模式是哪些屬性組成的,每一屬性的數據類型及數據可能的長度、是否允許為空值以及其它完整性約束條件。
定義基本表:
CREATE TABLE<表名>(<列名1><數據類型>[列級完整性約束條件]
[,<列名2><數據類型>[列級完整性約束條件]]…
[,<-列名n><數據類型>[列級完整性約束條件]]
[,表列級完整性約束條件]);
說明:
1、<>中是SQL語句必須定義的部分,[]中是SQL語句可選擇的部分,可以省略的。
2、CREATE TABLE表示是SQL的關鍵字,指示本SQL語句的功能。
3、<表名>是所要定義的基本表的名稱,一個表可以由一個或若干個屬性(列)組成,但至少有一個屬性,不允許一個屬性都沒有的表,這樣不是空表的含義。多個屬性定義由圓括弧指示其邊界,通過逗號把各個屬性定義分隔開,各個屬性名稱互不相同,可以採用任意順序排列,一般按照實體或聯系定義屬性的順序排列,關鍵字屬性組在最前面,這樣容易區分,也防止遺漏定義的屬性。
㈡ ThinkPHP里怎麼直接執行一句SQL語句 - PHP框架開發
$waw
=
M();
$res
=
$waw->query($sql); 或
$res
=
$waw->execute($sql);
由於$sql中包含了表名,實例化模型時可以為空。
註:query()與execute()是有區別的,不能亂用,詳見ThinkPHP光放手冊驅動擴展部分。
褔遞達
㈢ 關於thinkPHP中 foreach 裡面執行sql語句
原生sql查詢有
query()
和
execute()
兩個方法:
query():用於
sql
查詢操作,並返回符合查詢條件的數據集
execute():更新和寫入數據的
sql
操作,返回影響的記錄數
public function read(){
// 實例化一個空模型,沒有對應任何數據表
$ = m();
//或者使用 $ = new model();
$list = $->query("select * from user where uid<5");
if($list){
$this->assign('list', $list );
$this->display();
} else {
$this->error($->geterror());
}
}public function read(){
header("content-type:text/html; charset=utf-8");
// 實例化一個空模型,沒有對應任何數據表
$ = m();
//或者使用 $ = new model();
$num = $->execute("update user set email = '[email protected]' where uid=3");
if($num){
echo '更新 ',$num,' 條記錄。';
}else{
echo '無記錄更新';
}
}
㈣ 誰能幫忙提供詳細的在ThinkPHP中連表查詢的SQL語句,謝謝了
可參考:
ThinkPHP3.0完全開發手冊 6.12.10 JOIN
使用示例:
$Model->join(' work ON artist.id = work.artist_id')->join('card ON artist.card_id = card.id')->select();
默認採用LEFT JOIN 方式,如果需要用其他的JOIN方式,可以改成
$Model->join('RIGHT JOIN work ON artist.id = work.artist_id')->select();
如果join方法的參數用數組的話,只能使用一次join方法,並且不能和字元串方式混合使用。
例如:
join(array(' work ON artist.id = work.artist_id','card ON artist.card_id = card.id'))
㈤ ThinkPHP模型執行失敗,怎麼看構造的sql語句
執行失敗,如果是sql語句的語法錯誤,你打開thinkphp的調試模式,它會提示你什麼錯誤,並且把sql語句列印出來。
如果不是sql語句的語法錯誤,而是構造的sql語句不能達到你的要求,你需要查看的話,你可以使用M()->getLastSql();這個方法可以查看最後執行的一句sql語句,只要把這句放到你想要查看的構造的sql語句的後面就可以了。想要查看就用print_r把返回值列印出來就可以了
㈥ ThinkPHP里怎麼直接執行一句SQL語句
1、要在控制器裡面實例化一個空模型,如M() D() 2、先寫好sql語句,如:$sql = select * from users 3、調用空模型的query()方法 M()->query($sql)或者D()->query() 即可
㈦ 怎樣在thinkphp裡面執行原生的sql語句
原生SQL查詢有 query() 和 execute() 兩個方法:
query():用於 SQL 查詢操作,並返回符合查詢條件的數據集
execute():更新和寫入數據的 SQL 操作,返回影響的記錄數
publicfunctionread(){
//實例化一個空模型,沒有對應任何數據表
$Dao=M();
//或者使用$Dao=newModel();
$list=$Dao->query("select*fromuserwhereuid<5");
if($list){
$this->assign('list',$list);
$this->display();
}else{
$this->error($Dao->getError());
}
}
publicfunctionread(){
header("Content-Type:text/html;charset=utf-8");
//實例化一個空模型,沒有對應任何數據表
$Dao=M();
//或者使用$Dao=newModel();
$num=$Dao->execute("updateusersetemail='[email protected]'whereuid=3");
if($num){
echo'更新',$num,'條記錄。';
}else{
echo'無記錄更新';
}
}
㈧ thinkphp sql語句問題
$user=M('user');
$where['_string']
=
'
((check1=$id
and
state1=0)
OR
(check2=$id
and
state1=1
and
state2=0)
OR
(check3=$id
and
state1=1
and
state2=1
and
state3=0))';
$list=$user->join('apply
ON
user.id=apply.uid')->where($where)->select();
試看看,若兩表沒重復欄位應該可以,不行再追問。
㈨ thinkphp這句查詢語句換成sql語句是多少
要看前面定義的查詢條件$where具體是什麼
select id,name from tablename where $where order by status
㈩ thinkphp怎麼獲取添加的sql語句信息
thinkphp中的add方法獲取sql錯誤消息可以調用getDbError()函數。
getDbError函數可以獲取資料庫的錯誤信息。
function GetRandomAd()
{
global $myDB;
$today = date('j');
$ql = "SELECT * FROM reklama WHERE today<>'$today' OR realimpr<impr OR impr=0 ORDER BY RAND() LIMIT 1";
$result = $myDB->Execute($ql) or die(GetDbError($myDB->ErrorMsg()));
$r_id = $result->Fields("aid");
$r_ad_text = $result->Fields("ad_text");
$r_today = $result->Fields("today");
$result->Close();
if ($r_id)
{
if ($today != $r_today) $ql = "UPDATE reklama SET realimpr=1, today='$today' WHERE aid='$r_id'";
else $ql = "UPDATE reklama SET realimpr=realimpr+1 WHERE aid='$r_id'";
$result = $myDB->Execute($ql) or die(GetDbError($myDB->ErrorMsg()));
$result->Close();
}
return $r_ad_text;
}public function read(){
// 實例化一個空模型,沒有對應任何數據表
$Dao = M();
//或者使用 $Dao = new Model();
$list = $Dao->query("select * from user where uid<5");
if($list){
$this->assign('list', $list );
$this->display();
} else {
$this->error($Dao->getError());
}
}
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 實例化一個空模型,沒有對應任何數據表
$Dao = M();
//或者使用 $Dao = new Model();
$num = $Dao->execute("update user set email = '[email protected]' where uid=3");
if($num){
echo '更新 ',$num,' 條記錄。';
}else{
echo '無記錄更新';
}
}
public function read(){
$Dao = M("User");
$list = $Dao->query("select __TABLE__ from user where uid<5");
}原生SQL查詢
盡管ThinkPHP內置了大量的數據操作方法,但ThinkPHP仍保留了對原生SQL查詢的支持,以便滿足復雜查詢的需要和一些特殊的數據操作。
SQL查詢的返回值是直接返回DB類的查詢結果,沒有做任何的處理,而且可以支持查詢緩存。
原生SQL查詢有 query() 和 execute() 兩個方法:
query():用於 SQL 查詢操作,並返回符合查詢條件的數據集
execute():更新和寫入數據的 SQL 操作,返回影響的記錄數
query()
query() 方法是用於 SQL 查詢操作,和select()方法一樣返回符合查詢條件的數據集。
例子:
對於 query() 方法返回的數據集,跟 select() 一樣,可以在模板里直接循環輸出。
execute()
execute() 方法用於更新和寫入數據的 SQL 操作(註:非查詢操作,無返回數據集),返回影響的記錄數。
例子:
如果查詢比較復雜或一些特殊的數據操作不能通過 ThinkPHP 內置的 ORM 和 ActiveRecord 模式實現時,就可以通過直接使用原生 SQL 查詢來實現。
注意:以上都是 user 沒有表前綴的例子,在查詢語句中,查詢的表應該寫實際的表名字(包括前綴)。
小技巧
原生 SQL 查詢需要在查詢語句中寫上對應的表名,如果表名有改動的時候,就需要逐行去更改 SQL 語句中的表名字,這樣不免麻煩。ThinkPHP 提供了一個小技巧來幫助解決這個問題。
在 SQL 語句中,以 __TABLE__ 來替代真實的表名,而在實例化模型時,仍以表名為參數,如:
系統在解析的時候會自動替換成當前模型對應的表名,這樣就可以做到即使表名有所變化,只需修改實例化對應的表名即可而不用修改原生的 SQL 語句。