原生SQL查詢有 query() 和 execute() 兩個方法:
成都創(chuàng)新互聯(lián)公司主營路橋網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,成都app軟件開發(fā),路橋h5微信小程序搭建,路橋網(wǎng)站營銷推廣歡迎路橋等地區(qū)企業(yè)咨詢
query():用于 SQL 查詢操作,并返回符合查詢條件的數(shù)據(jù)集
execute():更新和寫入數(shù)據(jù)的 SQL 操作,返回影響的記錄數(shù)
query()
query() 方法是用于 SQL 查詢操作,和select()方法一樣返回符合查詢條件的數(shù)據(jù)集。
例子:
public function read(){
// 實例化一個空模型,沒有對應(yīng)任何數(shù)據(jù)表
$Dao = M();
//或者使用 $Dao = new Model();
$list = $Dao-query("select * from user where uid5");
if($list){
$this-assign('list', $list );
$this-display();
} else {
$this-error($Dao-getError());
}
}
對于 query() 方法返回的數(shù)據(jù)集,跟 select() 一樣,可以在模板里直接循環(huán)輸出。
execute()
execute() 方法用于更新和寫入數(shù)據(jù)的 SQL 操作(注:非查詢操作,無返回數(shù)據(jù)集),返回影響的記錄數(shù)。
例子:
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 實例化一個空模型,沒有對應(yīng)任何數(shù)據(jù)表
$Dao = M();
//或者使用 $Dao = new Model();
$num = $Dao-execute("update user set email = '12345@xxx.com' where uid=3");
if($num){
echo '更新 ',$num,' 條記錄。';
}else{
echo '無記錄更新';
}
}
如果查詢比較復雜或一些特殊的數(shù)據(jù)操作不能通過 ThinkPHP 內(nèi)置的 ORM 和 ActiveRecord 模式實現(xiàn)時,就可以通過直接使用原生 SQL 查詢來實現(xiàn)。
注意:以上都是 user 沒有表前綴的例子,在查詢語句中,查詢的表應(yīng)該寫實際的表名字(包括前綴)。
這么寫當然不行,因為in里面是個字符串你放數(shù)組格式就不對
用implode(",", $array)把數(shù)組轉(zhuǎn)為字符串就行,不用循環(huán)。
?php
mysql_connect("數(shù)據(jù)庫服務(wù)器IP", "用戶名", "密碼"); //連接數(shù)據(jù)庫服務(wù)器
mysql_select_db("數(shù)據(jù)庫名"); //激活要操作的數(shù)據(jù)庫
mysql_query("set names 字符集名稱"); //設(shè)置字符集,防止亂碼
$sql = "SQL查詢語句";
$recordset = mysql_query($sql); //執(zhí)行SQL語句,$recordset 是執(zhí)行結(jié)果(記錄集)
while ($row = mysql_fetch_array($result)) //將$recordset中的數(shù)據(jù)逐行轉(zhuǎn)換成數(shù)組$row
{
//操作查詢結(jié)果$row[...]
}
?
////////////////////////////////////////////////////////////////////////////////
//希望對您有所幫助
//////////////////////////////////////////////////////////////////////////////////