PHP是網(wǎng)站程序,SQL文件是數(shù)據(jù)庫(kù)腳本,你需要了解一下這兩個(gè)分別是什么東西。
創(chuàng)新互聯(lián)建站專注于網(wǎng)站建設(shè)|成都網(wǎng)站維護(hù)公司|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計(jì)與制作經(jīng)驗(yàn),為許多企業(yè)提供了網(wǎng)站定制設(shè)計(jì)服務(wù),案例作品覆蓋辦公空間設(shè)計(jì)等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身設(shè)計(jì)品質(zhì)網(wǎng)站。
你的情況應(yīng)該是要把sql文件導(dǎo)入到mysql里吧。
要么裝個(gè)mysql,要么裝個(gè)LAMP或者WAMP集成服務(wù),裝完以后進(jìn)入localhost/phpmyadmin/ 點(diǎn)SQL按鈕,然后把你的SQL文件內(nèi)容貼進(jìn)去,點(diǎn)執(zhí)行
1、軟件配置
Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2數(shù)據(jù)庫(kù),wamp2.2中的php版本是5.3.10。
Php環(huán)境也可以換成php+apache。
2、支持連接MySQL Server配置
php版本5.3以前,有php_mssql功能,可以使用,但是5.3及以后的版本不支持。
2.1、php連接mssql設(shè)置(php5.3以前版本)
(1)、打開php.ini,將
;extension=php_mssql.dll前面的分號(hào)(;)去掉,然后重啟 Apache。如果不行的話,進(jìn)行第2步。
(2)檢查一下你的php安裝目錄下的ext下面有沒(méi)有php_mssql.dll存在,如果沒(méi)有,從重新下載一個(gè)php安裝,要下載那個(gè)壓縮包的才是最完整的。
如果ext目錄下已經(jīng)有了php_mssql.dll,那么你需要打開php.ini,找到
extension_dir = "./ext"
這一句(或者類似的,不一定是"./ext",查找"extension_dir"即可),然后把"./ext"修改為你的php安裝目錄的ext目錄的完整路徑,比如"c:/php/ext",或者"c:/program files/php/ext"這樣。然后再次重啟 Apache。如果還是不行的話,可能就需要第3步了。
(3)把 php 目錄下的 ntwdblib.dll 和 php_mssql.dll 復(fù)制到 system32的系統(tǒng)目錄中去,然后重起Apache。
(4)然后就可以連接MSSQL,并進(jìn)行一些操作了。連接例子如下:
2.2、php連接sqlsrv(php5.3以及以上版本)
(1)、下載Microsoft Drivers for?PHP?for SQL Server,官方下載地址:,我使用的是SQLSRV2.0。
(2)、解壓下載下來(lái)的文件將php_pdo_sqlsrv_53_ts_vc9.dll文件和php_sqlsrv_53_ts_vc9.dll文件復(fù)制到php安裝目錄下的ext文件夾中。此處根據(jù)版本不同使用的文件不同。
(3)、在php.ini中添加
extension=php_sqlsrv_53_ts_vc9.dll
extension=php_pdo_sqlsrv_53_ts_vc9.dll
到很多;extension=***.dll語(yǔ)句后面,注意extension_dir 指向的位置是否正確。
(4)、重啟apache,然后訪問(wèn)訪問(wèn)地址/?Phpinfo=1,出現(xiàn)下面圖片中的內(nèi)容,則代表配置正確。
(5)、寫測(cè)試代碼,測(cè)試代碼如下:
?php
header("Content-type: text/html; charset=utf-8");
$serverName = "localhost"; //數(shù)據(jù)庫(kù)服務(wù)器地址$uid = "foodcert"; //數(shù)據(jù)庫(kù)用戶名$pwd = "foodcert"; //數(shù)據(jù)庫(kù)密碼$connectionInfo = array("UID"=$uid, "PWD"=$pwd, "Database"="FoodCert");
$conn = sqlsrv_connect( $serverName, $connectionInfo);if( $conn == false)
{
echo "連接失?。?;
die( print_r( sqlsrv_errors(), true));
}else{
echo "連接成功!"; ?
}
$query = sqlsrv_query($conn, "select * from 數(shù)據(jù)庫(kù)表");while($row = sqlsrv_fetch_array($query))
{
print_r($row);
}?
(6)、上面完成之后,測(cè)試代碼的時(shí)候會(huì)出現(xiàn)連接失敗,因?yàn)闆](méi)有安裝sql server nation client ,本地客戶端,去下載合適的客戶端,我使用的是Microsoft? SQL Server? 2012 Native Client,下載地址:
(7)、安裝完成之后,在重新啟動(dòng)apache,然后訪問(wèn)就可以連接成功了。
(8)、注意:在php.ini文件所在的文件夾中必須要有ntwdblib.dll文件存在。
?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);
?
按照步驟開始,多看PHP手冊(cè)。
SQL文件,你可以這樣導(dǎo)入MySQL中:
首先把SQL文件(假設(shè)名為abc.sql)復(fù)制到MySQL\bin目錄下;
打開命令提示符,轉(zhuǎn)到MySQL\bin的目錄,輸入命令:
mysql -u root -p db_name abc.sql
回車后,要求你輸入密碼。密碼正確后就把數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)中了。
說(shuō)明:
-u root 表明使用的帳號(hào)為root
-p 有密碼。
db_name abc.sql 將abc.sql導(dǎo)入到數(shù)據(jù)庫(kù)db_name中。
如果這種方法在你的機(jī)子上不適用的話,那就只有試試phpMyAdmin了。
?php
$file_name = "d:test.sql";
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "123456";
$dbname = "test";
set_time_limit(0);
$fp = @fopen($file_name,"r") or die("sql文件打不開");//打開文件
$pdo = new PDO("mysql:host=localhost;dbname=test","root","123456");//連接數(shù)據(jù)庫(kù)
$pdo-query('set names utf8');//設(shè)置編碼
echo "正在執(zhí)行導(dǎo)入操作";
while($SQL = GetNextSQL()){
if(!$pdo-query($SQL)){
echo "執(zhí)行出錯(cuò)";
echo "SQL語(yǔ)句為".$SQL;
}
}
echo "導(dǎo)入完成";
fclose($fp) or die("can't close file");//關(guān)閉文件
mysql_close();
//從文件中逐條取sql
function GetNextSQL(){
global $fp;
$sql="";
while($line = @fgets($fp,40960)){
$line = trim($line);
$line = str_replace("http:////", "http://", $line);
$line = str_replace("/","'",$line);
$line = str_replace("http://r//n","chr(13).chr(10)",$line);
$line = stripcslashes($line);
if(strlen($line)1){
if($line[0]=='-' $line[1]=="-"){
continue;
}
}
$sql .= $line.chr(13).chr(10);
if(strlen($line)0){
if($line[strlen($line)-1]==";"){
break;
}
}
}
return $sql;
}
親測(cè)有效。。
1、學(xué)習(xí)的方法,最好是看手冊(cè)
在前一篇文章中涉及到了連接數(shù)據(jù)庫(kù)sqlsrv_connect();還記得我們mysql連接數(shù)據(jù)庫(kù)的時(shí)候也是mysql_connect();兩者操作數(shù)據(jù)庫(kù)是很相似的。從零基礎(chǔ)開始學(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)看一下壓
這里就不用上代碼了