❶ ThinkPHP里怎么直接执行一句sql语句 - PHP框架开发
$waw
=
M();
$res
=
$waw->query($sql); 或
$res
=
$waw->execute($sql);
由于$sql中包含了表名,实例化模型时可以为空。
注:query()与execute()是有区别的,不能乱用,详见ThinkPHP光放手册驱动扩展部分。
褔递达
❷ thinkphp框架下的sql语句怎么写
把数据结构贴出来看看!
❸ 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 3.2 model怎么写sql
/**
* 保存数据
* @access public
* @param mixed $data 数据
* @param array $options 表达式
* @return boolean
*/
public function save($data='',$options=array()) {
if(empty($data)) {
// 没有传递数据,获取当前数据对象的值
if(!empty($this->data)) {
$data = $this->data;
// 重置数据
$this->data = array();
}else{
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
}
// 数据处理
$data = $this->_facade($data);
if(empty($data)){
// 没有数据则不执行
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
// 分析表达式
$options = $this->_parseOptions($options);
$pk = $this->getPk();
if(!isset($options['where']) ) {
// 如果存在主键数据 则自动作为更新条件
if (is_string($pk)) {
if(isset($data[$pk])) {
$where[$pk] = $data[$pk];
}
} elseif (is_array($pk)) {
// 增加复合主键支持
foreach ($pk as $field) {
if(isset($data[$pk])) {
$where[$field] = $data[$field];
} else {
// 如果缺少复合主键数据则不执行
$this->error = L('_OPERATION_WRONG_');
return false;
}
}
}
$options['where'] = $where;
unset($data[$pk]);
}else{
// 如果没有任何更新条件则不执行
$this->error = L('_OPERATION_WRONG_');
return false;
}
if(is_array($options['where']) && isset($options['where'][$pk])){
$pkValue = $options['where'][$pk];
}
if(false === $this->_before_update($data,$options)) {
return false;
}
$result = $this->db->update($data,$options);
if(false !== $result && is_numeric($result)) {
if(isset($pkValue)) $data[$pk] = $pkValue;
$this->_after_update($data,$options);
}
return $result;
}
复制代码
复制代码
上面这段代码来自TP的原生代码,注意观察
$options = $this->_parseOptions($options);
if(!isset($options['where']) ) {
// 如果存在主键数据 则自动作为更新条件
....
}else{
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
复制代码
复制代码
如查用户自行传入Where规则,则会失效!也就是说save只允许使用主键来更新。
我的建议
/**
* 保存数据
* @access public
* @param mixed $data 数据
* @param array $options 表达式
* @return boolean
*/
public function save($data = '', $options = array()) {
if (empty($data)) {
// 没有传递数据,获取当前数据对象的值
if (!empty($this->data)) {
$data = $this->data;
// 重置数据
$this->data = array();
} else {
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
}
// 数据处理
$data = $this->_facade($data);
if (empty($data)) {
// 没有数据则不执行
$this->error = L('_DATA_TYPE_INVALID_');
return false;
}
// 分析表达式
$options = $this->_parseOptions($options);
$pk = $this->getPk();
if (!isset($options['where'])) {
// 如果存在主键数据 则自动作为更新条件
if (is_string($pk)) {
if (isset($data[$pk])) {
$where[$pk] = $data[$pk];
}
} elseif (is_array($pk)) {
// 增加复合主键支持
foreach ($pk as $field) {
if (isset($data[$pk])) {
$where[$field] = $data[$field];
} else {
// 如果缺少复合主键数据则不执行
$this->error = L('_OPERATION_WRONG_');
return false;
}
}
}
$options['where'] = $where;
unset($data[$pk]);
}
if (!isset($options['where'])) {
// 如果没有任何更新条件则不执行
$this->error = L('_OPERATION_WRONG_');
return false;
}
if (is_array($options['where']) && isset($options['where'][$pk])) {
$pkValue = $options['where'][$pk];
}
if (false === $this->_before_update($data, $options)) {
return false;
}
$result = $this->db->update($data, $options);
if (false !== $result && is_numeric($result)) {
if (isset($pkValue))
$data[$pk] = $pkValue;
$this->_after_update($data, $options);
}
return $result;
}
❺ thinkphp 里sql 语句如何解读
这个不是原生写法,这是tp固有的写法,里面对语句做了封装,就是查询fields表里条件是model为空或其他条件符合的值。明白了吧!
❻ Thinkphp如何写sql语句
去Thinkphp 自己下个帮助文档看看去,最好多看看他们的论坛信息
❼ thinkphp 怎么写sql语句
$haha = M();
$res = $haha->query($sql);
或 $res = $waw->execute($sql);
$sql中包含了表名,实例化模型时可以为空。
注意query是查功能,execute是增删改功能
❽ 如何使用Thinkphp做一个自定义表单
用不用TP都是可以实现的.生成数据表的过程就只是sql 语句字符串的拼接
至于表单多少的问题,使用 js动态添加即可
如果还有什么更多的疑问,可以去后盾人学习下视频,这样非常有帮助的。
❾ 用thinkPHP框架怎么实现该sql语句
亲,这个不需要转换,直接使用就行了,TP里面提供了一个query方法的,直接吧sql传递进去
❿ Thinkphp 我想知道下面语句变成sql语句是什么样,请问怎样输出
在后面跟着
echo M(taskend) ->getLastSql();