❶ 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();