① php榪炴帴mssql鏁版嵁搴撶殑鍑犵嶆柟娉昣php瀹炰緥
娉ㄦ剰瑕侀噸鍚鏈嶅姟浣垮叾鐢熸晥銆 涓銆佸緩絝嬭繛鎺1銆乷dbc棣栧厛錛屽湪php紼嬪簭鎵鍦ㄧ殑鏈嶅姟鍣ㄨ劇疆odbc銆傝繖閲32浣嶅拰64浣嶆搷浣滅郴緇熸湁鍖哄埆銆32浣嶇殑浠庢帶鍒墮潰鏉誇腑綆$悊宸ュ叿涓鐨勬暟鎹婧愶紙odbc錛夌洿鎺ュ緩絝嬪氨鍙浠ヤ簡錛64浣嶇殑瑕佽繍琛孋:WindowsSysWOW64odbcad32.exe 浠庤繖閲岄潰璁劇疆銆傛敞鎰忥細涓婇潰鍙鐨勬槸鏁版嵁搴撴湇鍔″櫒涓32涓虹殑錛屾暟鎹婧愯劇疆鏈嶅姟鍣ㄤ負32浣嶅拰64浣嶄袱縐嶇殑鎯呭喌銆傚彧瑕佷袱涓鏈嶅姟鍣ㄥ緩絝嬬殑鏁版嵁婧愪綅鏁頒竴鑷村氨濂姐 涓嬮潰鏄痮dbc寤虹珛榪炴帴浠g爜銆 澶嶅埗浠g爜浠g爜濡備笅:$con = odbc_connect('odbc鍚嶇О','鐢ㄦ埛鍚','瀵嗙爜'); 2銆佽繛鎺mssql2000澶嶅埗浠g爜浠g爜濡備笅:$con = mssql_connect('鏁版嵁搴撳湴鍧','鐢ㄦ埛鍚','瀵嗙爜'); 3銆佽繛鎺mssql2008澶嶅埗浠g爜浠g爜濡備笅:$connectionInfo = array("UID"=鐢ㄦ埛鍚,"PWD"=瀵嗙爜,"Database"="鏁版嵁搴撳悕縐"); $con = sqlsrv_connect( 鏁版嵁搴撳湴鍧,$connectionInfo); 浜屻佽緭鍏ユ煡璇浠g爜 榪欎釜閮戒竴鏍鳳紝鍙浠ョ洿鎺ュ啓鍏ワ紝涔熷彲浠ヤ粠mssql涓楠岃瘉濂藉悗澶嶅埗榪囨潵銆傜畝鍗曠偣璇村氨鏄鎶婁竴涓猻ql璇鍙ヨ祴鍊肩粰涓涓鍙橀噺銆 綾諱技涓嬮潰浠g爜澶嶅埗浠g爜浠g爜濡備笅:$query = "SELECT top 12 * 鏁版嵁搴撳悕縐 order by id desc"; 涓夈佸緩絝嬫煡璇㈠苟鍙栧嚭鏁版嵁1銆乷dbc澶嶅埗浠g爜浠g爜濡備笅:$result = odbc_do($con,$query); while(odbc_fetch_row($result)){$鍙橀噺鍚嶇О = odbc_result($result, "瀛楁靛悕縐");}2銆佽繛鎺mssql2000澶嶅埗浠g爜浠g爜濡備笅:$result = mssql_query($con, $query); while($row =mssql_fetch_array($result)){$鍙橀噺鍚嶇О = $row["瀛楁靛悕縐"];}3銆佽繛鎺mssql2008澶嶅埗浠g爜浠g爜濡備笅:$result = sqlsrv_query($con, $query); while($row = sqlsrv_fetch_array($result)){$鍙橀噺鍚嶇О = $row["瀛楁靛悕縐"];}鍦╬hp5.3鍙婁互鍚庣殑鐗堟湰涓涓嶉檮甯sqlsrv搴撲簡銆傛墍浠ヨ佷粠寰杞榪欓噷涓嬭澆銆 鍥涖佸叧闂榪炴帴
② 怎樣用PHP連接sql資料庫
1、學習的方法,最好是看手冊
在前一篇文章中涉及到了連接資料庫sqlsrv_connect();還記得我們mysql連接資料庫的時候也是mysql_connect();兩者操作資料庫是很相似的。從零基礎開始學起的話,只能是查閱手冊。查看一下sqlsrv有哪些函數提供我們使用!推薦網址是:
【注意】很多的方法都跟mysql提供的方法很相似,看到後面的函數名就大概知道裡面的用法,比如說mysql執行sql語句的時候調用mysql_query();而sqlserver執行sql語句的時候調用也是sqlsrv_query(),但是特別注意一點就是,它們的傳遞參數不一樣。詳細的只能看一下手冊。接下來我簡單總結一下操作數據的方法
2、連接資料庫sqlsrv_connect()
<?php$serverName = "serverNamesqlexpress";//伺服器的名字,本地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、操作資料庫
1)執行sql語句sqlsrv_query(),返回值為true或者false,這里函數的用法跟mysql_query(),不一樣。它需要把連接的資源句柄當作參數傳進去,看源碼。資源句柄就是上面代碼連接資料庫的「$conn」。
$sql = "select * from test1"; //sql語句$data = sqlsrv_query($conn,$sql); //$conn資源句柄if($data == true){ die("執行成功");
}else{ die("執行失敗");
}
2)獲取結果集
//以數值索引數組、關聯數組或這兩種數組的形式檢索下一行的數據。類似於mysql_fetch_arraysqlsrv_fetch_array
//以對象形式檢索下一行的數據。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)顯示錯誤信息sqlsrv_errors():上面都有用到這個函數,只要是操作資料庫發生錯誤,都可以使用這個函數列印出來看一下壓
這里就不用上代碼了
③ PHP中用PDO操作資料庫時出現ERROR:could not find driver的問題
提示你沒有找到pdo的驅動,如下檢查
1extension=php_pdo.dll這個文件是否存在
2打開windows下的php.ini,查找 extension_dir = "地址",查看這個地址是悄畢否有文件夾
3看該文件夾中是否包含啟和芹上述文件
4新建一個php頁面,輸入<?php phpinfo(); ?>預覽,查看是否已經開啟了先關擴展
我以前遇到過這種情況,就是沒有指定擴展位置,php去棚橡查的時候沒找到,就報錯啦