问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

thinkphp怎么获取添加的sql语句信息

发布网友 发布时间:2022-04-23 19:05

我来回答

2个回答

热心网友 时间:2022-04-06 07:18

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 = '12345@xxx.com' 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 语句。

热心网友 时间:2022-04-06 08:36

  没有这个功能。
  ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。
  ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
北京协和售后 spcp代收费是什么 Doppelherz/双心 铁元营养口服液 500ml-详细介绍 淘宝阿尔卑斯店的德国铁元怎么样? 后面的肩膀缝疼因为什么 刮痧后一躺下肩膀疼的要命 “亭台六七座”的出处是哪里 mahini 是什么意思? 外阴溃烂了怎么办 外阴溃疡,溃疡处伤口不愈合,可以用什么药 thinkPHP3.1查询后数据输出 THINKPHP sql语句的问题 thinkphp 这个sql语句怎么用thinkphp的方式查询 ThinkPHP里怎么直接执行一句SQL语句? - PHP框架开发 请教thinkphp3打印sql语句 Thinkphp 我想知道下面语句变成sql语句是什么样,请问怎样输出? 请教大神thinkphp5 怎么打印sql语句 thinkphp怎么输出sql语句 thinkphp怎么打印sql语句 w10C盘满了,要怎么释放空间? win10系统应用商店下载软件很慢怎么办? 怎么安装windows10系统自带应用商店 感觉自己特别会杞人忧天,多余的担心,活得很压抑,请高手帮我开导开导,万分感谢! win10系统中应用商店怎么用 魅族手机在应用商店里怎么系统升级 win10应用商店更新系统后,应用商店还是老版本,怎么解决。 win10应用商店显示系统版本太低,硬件配置不够,无法安装应用,而实际上... win10系统自带的应用商店 好不好 win10系统自带的应用商店好用吗? windows系统哪个应用商店好用? 谁能帮忙提供详细的在ThinkPHP中连表查询的SQL语句,谢谢了 thinkphp 3.1.2 中M方法使用sql语句报错问题; 百香果可以用温水泡?还有吃法? 用thinkPHP框架怎么实现该sql语句 php thinkphp怎么获取sql执行结果 thinkPHP中 关于foreach里面执行sql语句该怎么写 thinkphp 里sql 语句如何解读??? 怎样用搜狗打出半个字 搜狗拼音输入法如何切换半角全角? 搜狗全(半)角的快捷键在何处设置? 急急急啊! 搜狗半角输入法怎么设置 搜狗拼音输入法的 半简 是什么意思? 怎样把搜狗输入法分成两半,一半数字一半九键 搜狗如何锁定半角 搜狗拼音输入法我现在一开机就是全角,怎么永久调为半角? 搜狗算法中怎么通过快捷键修改成半月牙 高铁人脸识别验票开始了吗? 那个搜狗拼音输入法中的全角和半角是什么东东? 当高铁遇上人脸识别:近期剃个光头可能认不出! 搜狗输入法全角半角