⑴ THINKPHP sql語句的問題
問題的所在, 原來這個跟入口文件 引入./ThinkPHP/ThinkPHP.php的位置有關系, 首先大家都應該知道載入重要核心文件都要用到
require("./ThinkPHP/ThinkPHP.php");這條代碼的位置很有講究,(我的環境是thinkphp3.1.3)
大家可以嘗試下, 如果我的代碼是
//3.載入核心類
require("./ThinkPHP/ThinkPHP.php");
//1.創建目錄名稱
define("APP_NAME","Home");
//2.創建目錄路徑
define("APP_PATH","./Home/");
//開啟調試模式
define('APP_DEBUG',true);
復制代碼
這樣放置的話結果是 在與ThinkPHP源碼目錄在同一個級別下生成的目錄文件,
情況二:
//1.創建目錄名稱
define("APP_NAME","Home");
//2.創建目錄路徑
define("APP_PATH","./Home/");
//3.載入核心類
require("./ThinkPHP/ThinkPHP.php");
//開啟調試模式
define('APP_DEBUG',true);
復制代碼
情況二的方法,會生成一個站點Home目錄結構都是好的,但問題是在調試模式下無法顯示sql生成語句。這是因為 當引入核心類庫文件 後就已經執行默認的設置了,所以 define('APP_DEBUG',true); 載入有問題。
想要解決以上兩個問題就必須要require('./ThinkPHP/ThinkPHP.php');這條代碼寫在最後一行。那麼你們所說的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 '無記錄更新';
}
}
⑶ ThinkPHP里怎麼直接執行一句SQL語句 - PHP框架開發
$waw
=
M();
$res
=
$waw->query($sql); 或
$res
=
$waw->execute($sql);
由於$sql中包含了表名,實例化模型時可以為空。
註:query()與execute()是有區別的,不能亂用,詳見ThinkPHP光放手冊驅動擴展部分。
褔遞達
⑷ Thinkphp 我想知道下面語句變成sql語句是什麼樣,請問怎樣輸出
在後面跟著
echo M(taskend) ->getLastSql();
⑸ 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 語句。
⑹ php thinkphp怎麼獲取sql執行結果
都是有返回值的,添加成功返回id,失敗則返回false;修改成功返回true,失敗則返回0,sql語句執行錯誤返回的是false;刪除和修改一樣,查詢成功返回數組形式的結果集,否就返回false。
$data = D("User")->select();
$data就是接收的sql執行結果
⑺ thinkphp怎麼輸出sql語句
ThinkPHP獲取最後一條已執行SQL語句
echo$model->getLastSql();
⑻ 怎樣在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 語句如何解讀
這個不是原生寫法,這是tp固有的寫法,裡面對語句做了封裝,就是查詢fields表裡條件是model為空或其他條件符合的值。明白了吧!
⑽ thinkphp 這個sql語句怎麼用thinkphp的方式查詢
$table=M('表名');
$where['id']=1;//這樣寫比較好,數組形式,2個where相當於id=1and..
$list=$table->field('bb')->where($where)->select();
echo$table->getlastsql();//輸出最後查詢的一句SQL一般校驗SQL錯誤都是從這里來的
$this->assign('list',$list);
$this->display('templates_name');