當前位置:首頁 » 編程語言 » thinkphp獲取執行sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

thinkphp獲取執行sql

發布時間: 2022-06-09 21:00:54

Ⅰ 怎樣在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中的add方法怎麼獲取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;

}

Ⅲ ThinkPHP里怎麼直接執行一句SQL語句

1、要在控制器裡面實例化一個空模型,如M() D()
2、先寫好sql語句,如:$sql = select * from users
3、調用空模型的query()方法 M()->query($sql)或者D()->query() 即可

Ⅳ thinkphp怎麼獲取添加的sql語句信息

  1. 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;

    }

  2. 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 語句。

Ⅳ 關於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 '無記錄更新';
}
}

Ⅵ php thinkphp怎麼獲取sql執行結果

都是有返回值的,添加成功返回id,失敗則返回false;修改成功返回true,失敗則返回0,sql語句執行錯誤返回的是false;刪除和修改一樣,查詢成功返回數組形式的結果集,否就返回false。

$data = D("User")->select();

$data就是接收的sql執行結果

Ⅶ ThinkPHP里怎麼直接執行一句SQL語句 - PHP框架開發

$waw
=
M();
$res
=
$waw->query($sql); 或
$res
=
$waw->execute($sql);
由於$sql中包含了表名,實例化模型時可以為空。
註:query()與execute()是有區別的,不能亂用,詳見ThinkPHP光放手冊驅動擴展部分。

褔遞達

Ⅷ 在ThinkPHP中怎麼執行這個SQL語句

我用的是thinkphp 3.2.3, 如果你沒用用thinkphp5.0以上的,你可以試一下M('INFORMATION_SCHEMA.TABLES')->where(array('TABLE_SCHEMA'=>'資料庫名'))->field('TABLE_NAME')->select()

Ⅸ thinkphp中怎樣記錄執行的sql語句

原生SQL查詢有 query() 和 execute() 兩個方法:
query():用於 SQL 查詢操作,並返回符合查詢條件的數據集
execute():更新和寫入數據的 SQL 操作,返回影響的記錄數
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 '無記錄更新'; }}

Ⅹ php怎麼獲取上一條執行的sql語句

原生代碼不支持獲取上一次執行的sql語句,ThinkPHP用getLastSql()函數獲取的,代碼如下:
class UserModel extends Model(BaseModel){
public function test($data){
$model = M('user');
$model->add($data);
$sql = $model->getLastSql();
}
TP還有一種種方法就是直接用_sql,這個更方便!
1.
$model->_sql();
方法實際執行的就是
2.
$model->getLastSql();
用_sql注意中文亂碼問題,相來說還是getlastsql比較快,_有時候會因為中文編碼出錯
至於大小寫的問題根本不存在
php不區分這些大小寫的。