要先create再add,create可以根據(jù)表單自動(dòng)創(chuàng)建數(shù)據(jù)庫數(shù)據(jù),也可以對(duì)傳入的參數(shù)進(jìn)行驗(yàn)證和過濾(在model里用_validate指定規(guī)則)。add直接插入create之后的數(shù)據(jù),或者把傳入的數(shù)組直接插入數(shù)據(jù)庫
建網(wǎng)站原本是網(wǎng)站策劃師、網(wǎng)絡(luò)程序員、網(wǎng)頁設(shè)計(jì)師等,應(yīng)用各種網(wǎng)絡(luò)程序開發(fā)技術(shù)和網(wǎng)頁設(shè)計(jì)技術(shù)配合操作的協(xié)同工作。成都創(chuàng)新互聯(lián)專業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站制作(企業(yè)站、成都響應(yīng)式網(wǎng)站建設(shè)公司、電商門戶網(wǎng)站)等服務(wù),從網(wǎng)站深度策劃、搜索引擎友好度優(yōu)化到用戶體驗(yàn)的提升,我們力求做到極致!
原生SQL查詢有 query() 和 execute() 兩個(gè)方法:
query():用于 SQL 查詢操作,并返回符合查詢條件的數(shù)據(jù)集
execute():更新和寫入數(shù)據(jù)的 SQL 操作,返回影響的記錄數(shù)
query()
query() 方法是用于 SQL 查詢操作,和select()方法一樣返回符合查詢條件的數(shù)據(jù)集。
例子:
public function read(){
// 實(shí)例化一個(gè)空模型,沒有對(duì)應(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());
}
}
對(duì)于 query() 方法返回的數(shù)據(jù)集,跟 select() 一樣,可以在模板里直接循環(huán)輸出。
execute()
execute() 方法用于更新和寫入數(shù)據(jù)的 SQL 操作(注:非查詢操作,無返回?cái)?shù)據(jù)集),返回影響的記錄數(shù)。
例子:
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 實(shí)例化一個(gè)空模型,沒有對(duì)應(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 '無記錄更新';
}
}
如果查詢比較復(fù)雜或一些特殊的數(shù)據(jù)操作不能通過 ThinkPHP 內(nèi)置的 ORM 和 ActiveRecord 模式實(shí)現(xiàn)時(shí),就可以通過直接使用原生 SQL 查詢來實(shí)現(xiàn)。
注意:以上都是 user 沒有表前綴的例子,在查詢語句中,查詢的表應(yīng)該寫實(shí)際的表名字(包括前綴)。
直接調(diào)用就行了,不過可能你需要引用文件,以下是例子
//文件conn.php,用于連接數(shù)據(jù)庫
class
DB_Conn
{
}
//文件
db.php,
用于數(shù)據(jù)庫操作,這個(gè)類必然需要使用數(shù)據(jù)庫連接對(duì)象,因此引用conn.php
require_once
conn.php;
class
DB
{
}
//文件user.php
require_once
'db.php';
class
User
{
public
function
getUserById($id)
{
$conn
=
new
Db_Conn();
$db
=
new
Db();
}
}以上只是示意,如果文件不在一個(gè)目錄下記得修改路徑。而且,一般來說數(shù)據(jù)庫對(duì)象應(yīng)該包含連接數(shù)據(jù)庫和數(shù)據(jù)操作的全部功能,不需要分別寫在兩個(gè)類里面。我覺得你對(duì)面向?qū)ο蟮睦斫膺€很淺薄,需要進(jìn)一步累積經(jīng)驗(yàn)。
1、首先獲得用戶名稱
2、用你的代碼獲得增加多少金錢
3、連接數(shù)據(jù)庫 查看(mysql_connect,mysql_link)
4、假設(shè)如下語句,就可實(shí)現(xiàn)你的增加用戶錢數(shù)的目的!
alter member set memberdata=memberdata-5 where 用戶名="xxx";
--------------------------------
晚上給你一個(gè)演示!
其實(shí),這樣的操作,你可以看看Discuz的源碼就明白了!
function open_bm($o_bm, $o_pxbm, $o_fs) //打開一張表
{
//此處沒有返回結(jié)果集,加上return就可以了
return $this-query("SELECT * FROM $o_bm order by $o_pxbm $o_fs");
}
此外, mysql_result的第一個(gè)參數(shù)是resource.第二個(gè)是數(shù)據(jù)行編號(hào). 數(shù)據(jù)行編號(hào)從0開始,你輸入1時(shí)請(qǐng)確保結(jié)果集至少2條數(shù)據(jù)
建議你每個(gè)function都應(yīng)該有return.