?php
創(chuàng)新互聯(lián)建站是專業(yè)的營(yíng)山網(wǎng)站建設(shè)公司,營(yíng)山接單;提供成都做網(wǎng)站、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行營(yíng)山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
for($i=0;$=100;$i++)
{
$sql = 'INSERT INTO `****`.`sdb_omms_omproject` (`a`, `b`, `c`, `d`, `e`, `f`) VALUES ('1', '2', '3', '4', '5', '6), ('A', 'B', 'C', 'D', 'E', 'F');'
mysql_query($sql );
}
?
這樣循環(huán)就可以插入100條了
thinkphp中的add方法獲取sql錯(cuò)誤消息可以調(diào)用getDbError()函數(shù)。
getDbError函數(shù)可以獲取數(shù)據(jù)庫(kù)的錯(cuò)誤信息。
function GetRandomAd()
{
global $myDB;
$today = date('j');
$ql = "SELECT * FROM reklama WHERE today'$today' OR realimprimpr 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(){
// 實(shí)例化一個(gè)空模型,沒(méi)有對(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());
}
}
public function read(){
header("Content-Type:text/html; charset=utf-8");
// 實(shí)例化一個(gè)空模型,沒(méi)有對(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 '無(wú)記錄更新';
}
}
public function read(){
$Dao = M("User");
$list = $Dao-query("select __TABLE__ from user where uid5");
}
原生SQL查詢
盡管ThinkPHP內(nèi)置了大量的數(shù)據(jù)操作方法,但ThinkPHP仍保留了對(duì)原生SQL查詢的支持,以便滿足復(fù)雜查詢的需要和一些特殊的數(shù)據(jù)操作。
SQL查詢的返回值是直接返回DB類的查詢結(jié)果,沒(méi)有做任何的處理,而且可以支持查詢緩存。
原生SQL查詢有 query() 和 execute() 兩個(gè)方法:
query():用于 SQL 查詢操作,并返回符合查詢條件的數(shù)據(jù)集
execute():更新和寫入數(shù)據(jù)的 SQL 操作,返回影響的記錄數(shù)
query()
query() 方法是用于 SQL 查詢操作,和select()方法一樣返回符合查詢條件的數(shù)據(jù)集。
例子:
對(duì)于 query() 方法返回的數(shù)據(jù)集,跟 select() 一樣,可以在模板里直接循環(huán)輸出。
execute()
execute() 方法用于更新和寫入數(shù)據(jù)的 SQL 操作(注:非查詢操作,無(wú)返回?cái)?shù)據(jù)集),返回影響的記錄數(shù)。
例子:
如果查詢比較復(fù)雜或一些特殊的數(shù)據(jù)操作不能通過(guò) ThinkPHP 內(nèi)置的 ORM 和 ActiveRecord 模式實(shí)現(xiàn)時(shí),就可以通過(guò)直接使用原生 SQL 查詢來(lái)實(shí)現(xiàn)。
注意:以上都是 user 沒(méi)有表前綴的例子,在查詢語(yǔ)句中,查詢的表應(yīng)該寫實(shí)際的表名字(包括前綴)。
小技巧
原生 SQL 查詢需要在查詢語(yǔ)句中寫上對(duì)應(yīng)的表名,如果表名有改動(dòng)的時(shí)候,就需要逐行去更改 SQL 語(yǔ)句中的表名字,這樣不免麻煩。ThinkPHP 提供了一個(gè)小技巧來(lái)幫助解決這個(gè)問(wèn)題。
在 SQL 語(yǔ)句中,以 __TABLE__ 來(lái)替代真實(shí)的表名,而在實(shí)例化模型時(shí),仍以表名為參數(shù),如:
系統(tǒng)在解析的時(shí)候會(huì)自動(dòng)替換成當(dāng)前模型對(duì)應(yīng)的表名,這樣就可以做到即使表名有所變化,只需修改實(shí)例化對(duì)應(yīng)的表名即可而不用修改原生的 SQL 語(yǔ)句。
很簡(jiǎn)單把你的語(yǔ)句改成:
$insertsql="insert into expert (name,class,zcname,suit,content,cj,img,sort,maik,fclass) values('$_POST[name]','$_POST[class]','$_POST[zc_name]','$_POST[suit]','$_POST[content]','$_POST[cj]','$_POST','$_POST[sort]','$_POST[maik]','$fclass')";
就可以了,你可以echo 下試試。。。。
可以的話給我加分,嘿嘿。,。。。
?php
$dbhost = 'localhost:3306'; // mysql服務(wù)器主機(jī)地址
$dbuser = 'root'; // mysql用戶名
$dbpass = '123456'; // mysql用戶名密碼
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
if(! $conn ){
die('連接失敗: ' . mysqli_error($conn))
;}
echo '連接成功br /'; // 設(shè)置編碼,防止中文亂碼mysqli_query($conn , "set names utf8");
$runoob_title = '學(xué)習(xí) Python';
$runoob_author = 'RUNOOB.COM';
$submission_date = '2016-03-06';
$sql = "INSERT INTO runoob_tbl ".
"(runoob_title,runoob_author, submission_date) ".
"VALUES ".
"('$runoob_title','$runoob_author','$submission_date')";
mysqli_select_db( $conn, 'RUNOOB' );$retval = mysqli_query( $conn, $sql );
if(! $retval ){
die('無(wú)法插入數(shù)據(jù): ' . mysqli_error($conn))
;}
echo "數(shù)據(jù)插入成功\n";
mysqli_close($conn);
?
按照步驟開(kāi)始,多看PHP手冊(cè)。
1、學(xué)習(xí)的方法,最好是看手冊(cè)
在前一篇文章中涉及到了連接數(shù)據(jù)庫(kù)sqlsrv_connect();還記得我們mysql連接數(shù)據(jù)庫(kù)的時(shí)候也是mysql_connect();兩者操作數(shù)據(jù)庫(kù)是很相似的。從零基礎(chǔ)開(kāi)始學(xué)起的話,只能是查閱手冊(cè)。查看一下sqlsrv有哪些函數(shù)提供我們使用!推薦網(wǎng)址是:
【注意】很多的方法都跟mysql提供的方法很相似,看到后面的函數(shù)名就大概知道里面的用法,比如說(shuō)mysql執(zhí)行sql語(yǔ)句的時(shí)候調(diào)用mysql_query();而sqlserver執(zhí)行sql語(yǔ)句的時(shí)候調(diào)用也是sqlsrv_query(),但是特別注意一點(diǎn)就是,它們的傳遞參數(shù)不一樣。詳細(xì)的只能看一下手冊(cè)。接下來(lái)我簡(jiǎn)單總結(jié)一下操作數(shù)據(jù)的方法
2、連接數(shù)據(jù)庫(kù)sqlsrv_connect()
?php$serverName = "serverName\sqlexpress";//服務(wù)器的名字,本地localhost$connectionInfo = array( "Database"="dbName", "UID"="userName", "PWD"="password");$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn ) { ? ? echo "Connection established.br /";
}else{ ? ? echo "Connection could not be established.br /"; ? ? die( print_r( sqlsrv_errors(), true));
}
3、操作數(shù)據(jù)庫(kù)
1)執(zhí)行sql語(yǔ)句sqlsrv_query(),返回值為true或者false,這里函數(shù)的用法跟mysql_query(),不一樣。它需要把連接的資源句柄當(dāng)作參數(shù)傳進(jìn)去,看源碼。資源句柄就是上面代碼連接數(shù)據(jù)庫(kù)的“$conn”。
$sql = "select * from test1"; ? //sql語(yǔ)句$data = sqlsrv_query($conn,$sql); ?//$conn資源句柄if($data == true){ ? ?die("執(zhí)行成功");
}else{ ? ?die("執(zhí)行失敗");
}
2)獲取結(jié)果集
//以數(shù)值索引數(shù)組、關(guān)聯(lián)數(shù)組或這兩種數(shù)組的形式檢索下一行的數(shù)據(jù)。類似于mysql_fetch_arraysqlsrv_fetch_array ?
//以對(duì)象形式檢索下一行的數(shù)據(jù)。sqlsrv_fetch_object 1234
$sql = "select * from test1";$data = sqlsrv_query($conn,$sql);if($data == true){ ? ?while($row = sqlsrv_fetch_array( $data, SQLSRV_FETCH_ASSOC) ) { ? ? ? ? ?echo $row['id'].", ".$row['name']."br /";
}else{ ? ? ? ? die( print_r( sqlsrv_errors(), true));
}
}
$sql = "SELECT fName, lName FROM Table_1";$stmt = sqlsrv_query( $conn, $sql);if( $stmt === false ) { ? ? die( print_r( sqlsrv_errors(), true));
}while( $obj = sqlsrv_fetch_object( $stmt)) { ? ? ?echo $obj-fName.", ".$obj-lName."br /";
}
3)顯示錯(cuò)誤信息sqlsrv_errors():上面都有用到這個(gè)函數(shù),只要是操作數(shù)據(jù)庫(kù)發(fā)生錯(cuò)誤,都可以使用這個(gè)函數(shù)打印出來(lái)看一下壓
這里就不用上代碼了