当前位置:首页 » 编程语言 » thinkphp记录sql语句
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

thinkphp记录sql语句

发布时间: 2022-06-15 08:06:44

A. 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 '无记录更新'; }}

B. 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无法显示就神奇的出现了。

C. 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 语句。

D. 请教大神thinkphp5 怎么打印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]

你好,一共有两种方法可以打印sql语句,具体实现方法可参照这篇文章:

thinkphp5 怎么打印sql语句

E. thinkPHP中 关于foreach里面执行sql语句该怎么写

原SQL查询
query()
execute()
两:
query():用于
SQL
查询操作并返符合查询条件数据集
execute():更新写入数据
SQL
操作返影响记录数
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
'记录更新';
}
}

F. ThinkPHP里怎么直接执行一句SQL语句 - PHP框架开发

$waw
=
M();
$res
=
$waw->query($sql); 或
$res
=
$waw->execute($sql);
由于$sql中包含了表名,实例化模型时可以为空。
注:query()与execute()是有区别的,不能乱用,详见ThinkPHP光放手册驱动扩展部分。

褔递达

G. 关于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 '无记录更新';
}
}

H. thinkphp 里sql 语句如何解读

这个不是原生写法,这是tp固有的写法,里面对语句做了封装,就是查询fields表里条件是model为空或其他条件符合的值。明白了吧!

I. 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]

(9)thinkphp记录sql语句扩展阅读:

sql的应用原则:

在关系数据库实现过程中,第一步是建立关系模式,定义基本表的结构,即该关系模式是哪些属性组成的,每一属性的数据类型及数据可能的长度、是否允许为空值以及其它完整性约束条件。

定义基本表:

CREATE TABLE<表名>(<列名1><数据类型>[列级完整性约束条件]

[,<列名2><数据类型>[列级完整性约束条件]]…

[,<-列名n><数据类型>[列级完整性约束条件]]

[,表列级完整性约束条件]);

说明:

1、<>中是SQL语句必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。

2、CREATE TABLE表示是SQL的关键字,指示本SQL语句的功能。

3、<表名>是所要定义的基本表的名称,一个表可以由一个或若干个属性(列)组成,但至少有一个属性,不允许一个属性都没有的表,这样不是空表的含义。多个属性定义由圆括号指示其边界,通过逗号把各个属性定义分隔开,各个属性名称互不相同,可以采用任意顺序排列,一般按照实体或联系定义属性的顺序排列,关键字属性组在最前面,这样容易区分,也防止遗漏定义的属性。

J. 怎样在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'无记录更新';
}
}