⑴ thinkphp怎么输出sql语句
ThinkPHP获取最后一条已执行SQL语句
echo$model->getLastSql();
⑵ 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的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]
(4)thinkphp得到sql语句扩展阅读:
sql的应用原则:
在关系数据库实现过程中,第一步是建立关系模式,定义基本表的结构,即该关系模式是哪些属性组成的,每一属性的数据类型及数据可能的长度、是否允许为空值以及其它完整性约束条件。
定义基本表:
CREATE TABLE<表名>(<列名1><数据类型>[列级完整性约束条件]
[,<列名2><数据类型>[列级完整性约束条件]]…
[,<-列名n><数据类型>[列级完整性约束条件]]
[,表列级完整性约束条件]);
说明:
1、<>中是SQL语句必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。
2、CREATE TABLE表示是SQL的关键字,指示本SQL语句的功能。
3、<表名>是所要定义的基本表的名称,一个表可以由一个或若干个属性(列)组成,但至少有一个属性,不允许一个属性都没有的表,这样不是空表的含义。多个属性定义由圆括号指示其边界,通过逗号把各个属性定义分隔开,各个属性名称互不相同,可以采用任意顺序排列,一般按照实体或联系定义属性的顺序排列,关键字属性组在最前面,这样容易区分,也防止遗漏定义的属性。
⑸ php怎么获取上一条执行的sql语句
原生代码不支持获取上一次执行的sql语句,ThinkPHP用getLastSql()函数获取的,代码如下:
classUserModelextendsModel(BaseModel){
publicfunctiontest($data){
$model=M('user');
$model->add($data);
$sql=$model->getLastSql();
}
TP还有一种种方法就是直接用_sql,这个更方便!
1.
$model->_sql();
方法实际执行的就是
2.
$model->getLastSql();
用_sql注意中文乱码问题,相来说还是getlastsql比较快,_有时候会因为中文编码出错
至于大小写的问题根本不存在 php不区分这些大小写的。
⑹ thinkphp 怎么写sql语句
$haha = M();
$res = $haha->query($sql);
或 $res = $waw->execute($sql);
$sql中包含了表名,实例化模型时可以为空。
注意query是查功能,execute是增删改功能
⑺ 关于thinkPHP中 foreach 里面执行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());
}
}
⑻ 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 语句。
⑼ 请教大神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语句