當前位置:首頁 » 編程語言 » php請求sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

php請求sql

發布時間: 2023-02-08 02:10:12

A. PHP執行sql查詢怎麼做

$haha = M(),$res = $haha->query($sql)。

或 $res = $waw->execute($sql)。

$sql中包含了表名,實例化模型時可以為空。注意query是查功能,execute是增刪改功能。

B. php怎麼樣連接sql資料庫

1、軟體配置

Win7 64 +wampserver2.2d-x32+SQL Server 2008 R2資料庫,wamp2.2中的php版本是5.3.10。

Php環境也可以換成php+apache。

2、支持連接MySQL Server配置

php版本5.3以前,有php_mssql功能,可以使用,但是5.3及以後的版本不支持。

2.1、php連接mssql設置(php5.3以前版本)

(1)、打開php.ini,將
;extension=php_mssql.dll前面的分號(;)去掉,然後重啟 Apache。如果不行的話,進行第2步。

(2)檢查一下你的php安裝目錄下的ext下面有沒有php_mssql.dll存在,如果沒有,從www.php.net重新下載一個php安裝,要下載那個壓縮包的才是最完整的。
如果ext目錄下已經有了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 復制到 system32的系統目錄中去,然後重起Apache。

(4)然後就可以連接MSSQL,並進行一些操作了。連接例子如下:

2.2、php連接sqlsrv(php5.3以及以上版本)

(1)、下載Microsoft Drivers forPHPfor SQL Server,官方下載地址:http://www.microsoft.com/en-us/download/details.aspx?id=20098,我使用的是SQLSRV2.0。

(2)、解壓下載下來的文件將php_pdo_sqlsrv_53_ts_vc9.dll文件和php_sqlsrv_53_ts_vc9.dll文件復制到php安裝目錄下的ext文件夾中。此處根據版本不同使用的文件不同。

(3)、在php.ini中添加

extension=php_sqlsrv_53_ts_vc9.dll

extension=php_pdo_sqlsrv_53_ts_vc9.dll

到很多;extension=***.dll語句後面,注意extension_dir 指向的位置是否正確。

(4)、重啟apache,然後訪問http://apache訪問地址/?Phpinfo=1,出現下面圖片中的內容,則代表配置正確。

(5)、寫測試代碼,測試代碼如下:

(6)、上面完成之後,測試代碼的時候會出現連接失敗,因為沒有安裝sql server nation client ,本地客戶端,去下載合適的客戶端,我使用的是Microsoft? SQL Server? 2012 Native Client,下載地址:

(7)、安裝完成之後,在重新啟動apache,然後訪問就可以連接成功了。

(8)、注意:在php.ini文件所在的文件夾中必須要有ntwdblib.dll文件存在。

C. 怎樣用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():上面都有用到這個函數,只要是操作資料庫發生錯誤,都可以使用這個函數列印出來看一下壓
這里就不用上代碼了

D. 如何用PHP連接SQL Server

1:PHP5.2.x本身有個php_mssql.dll的擴展用來連接Sql server,但是這個dll只是用來連接低版本 Sql server的(2000以下版本),在Sql server 2005及以上版本無法使用mssql_connect連接到資料庫。
2:php5.3.x不再支持php_mssql.dll 拓展庫了,及時使用php5.2.x中的php_mssql.dll也無法使用。 微軟專門為PHP出了個SQL Server的擴展(Windows版本的),對於Windows下使用php開發SQL Server應用來說,這個擴展有利於利用SQL Server來開發php平台連接sql server資料庫管理系統。
一、php5.3以下的版本連接sql server
5.3以下的版本擴展裡面自帶一個php_mssql.dll;接資料庫的擴展,可以利用這個擴展鏈接資料庫,(只限於鏈接低版本資料庫)。
具體的步驟如下:
1:首先安裝sql server,超級不好安裝,我之前安裝的是2008版本的,Windows過期後就不能用了,然後重裝還裝不上,最後重裝系統才裝上
2:確定SQL裝的時候用的是混合認證模式,或SQL驗證模式,然後打開php的配置文件(php.ini),開啟mssql擴展 (extension=php_pdo_mssql.dll前面的分號去掉)並且需要把mssql.secure_connection = On 重啟後生效。
如果比較順利的話已經可以連接資料庫了,如果連不上就需要繼續低下的配置:
3: 檢查ntwdblib文件的版本(php/下面和Apache/下面)下載正確的版本的 ntwdblib.dll(2000.80.194.0)覆蓋現有的DLL文件,(把ntwdblib.dll,php_mssql.dll 復制到system32目錄中也可以)ntwdblib.dll 用於PHP連接MSSQL2005或2008的驅動文件。
4:測試連接:mssql_connect('localhost,1433', '用戶名', '密碼');
二、php5.3+連接sql server
其 實5.3以下的php版本已經很少用了,況且安全性和兼容性都不好,所以高版本的php還是比較常見的。實踐證明低版本的php連接資料庫成功率比較低 (2005以上的版本幾乎不能使用),推薦使用php5.3+ php使用微軟專門的擴展 SQLSRV 來連接sqlserver資料庫

1:先到微軟網站下載 SQL Server Driver for PHP 是一個自解壓的 EXE文件,解壓縮後你會得到這么幾個文件:

其中的52、53表示就是php的5.2.x和5.3.x 版本,選擇跟你php版本相匹配的;vc6或vc9的選擇要看你使用的是什麼web伺服器軟體,如果使用的是IIS那就選擇vc9的,如果是Apache 則選擇vc6的,ts和nts的選擇要看你安裝的php版本是線程安全版的還是非線程安全版,ts是線程安全,nts是非線程安全。
如果不知道可以在phpinfo里看Zend Extension Build這個屬性如下圖:

2:將擴展拷貝到拷到php/ext目錄下,在php.ini文件,添加一下代碼:
extension=在ext下的pdo擴展(用於pdo)
extension=在ext下的擴展
3:重啟伺服器,打開phpinfo();看到以下狀態就證明添加擴展成功,

4:連接測試:


<?php

$serverName = "(local)";

$connectionInfo = array("UID"=>"sa","PWD"=>"admin","Database"=>"db_online");

$conn = sqlsrv_connect( $serverName, $connectionInfo);

if( $conn ){

echo "Connection established. ";

}else{

echo "Connection could not be established. ";

die( var_mp(sqlsrv_errors()));

}

sqlsrv_close( $conn);

?>

注意這里的連接不是用mssql_connect而是用sqlsrv_connect,在這個版本中,還有幾個函數:
這個擴展為php新增了一系列sqlsrv_開頭的函數,常用的如下:

sqlsrv_connect
sqlsrv_close
sqlsrv_commit
sqlsrv_errors
sqlsrv_fetch
sqlsrv_fetch_array
sqlsrv_fetch_metadata
sqlsrv_num_rows
sqlsrv_query
sqlsrv_rollback
sqlsrv_rows_affected
. . .
另外注意的是,如果使用這個擴展連接Sql server 2005以及以上版本的sql server(如sql server 2008),你還需要在機器上先安裝 SQL Server Native Client
不然會出現如下錯誤:

array
0 =>array
0 =>string'IMSSP'(length=5)
'SQLSTATE' =>string'IMSSP'(length=5)
1 =>int-49
'code' =>int-49
2 =>string'This extension requires the Microsoft SQL Server 2012 Native Client. Access the following URL to download the Microsoft SQL Server 2012 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
'message' =>string'This extension requires the Microsoft SQL Server 2008 Native Client. Access the following URL to download the Microsoft SQL Server 2008 Native Client ODBC driver for x86: http://go.microsoft.com/fwlink/?LinkId=163712'(length=216)
1 =>array
0 =>string'IM002'(length=5)
'SQLSTATE' =>string'IM002'(length=5)
1 =>int0
'code' =>int0
2 =>string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序'(length=71)
'message' =>string'[Microsoft][ODBC 驅動程序管理器] 未發現數據源名稱並且未指定默認驅動程序'(length=71)
. . . .

解決方法:需要安裝SQL Server 2008 Native Client ODBC Driver,下載安裝文件sqlncli.msi,安裝後就可以了。

以上就是php連接sql server的方法,希望對大家解決類似問題有所幫助。



E. 如何用php連接sql server資料庫

我用的PHP版本是php5.6.12,mssql資料庫版本為2008
兩種途徑:
1、直接連接
$servname="CAPTAINHERO567";
$conninfo=array(
"Database"=>"netdata",
"UID"=>"lxz2005",
"PWD"=>"831140");
$conn=sqlsrv_connect($servname,
$conninfo);
$sql="select
*
from
Pinfo";
$db=sqlsrv_query($conn,
$sql);
while($row=sqlsrv_fetch_array($db))
{
echo("
".iconv("GB2312","UTF-8",$row["Pname"])."
");
}
2、使用PDO抽象數據層連接
$hostname
=
"192.168.1.100";
$dbname
=
"Northwind";
$username
=
"sa";
$pwd
=
"pwd100";
$dsn="sqlsrv:Server=$hostname;database=$dbname";
$conn
=
new
PDO
($dsn,$username,$pwd);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
echo
"mssql
database
connnection
sucessed!";

F. php怎麼調用SQL,語句怎麼寫

首先這個表肯定是有nation_id的吧?
不防使用nation_id欄位來標識國旗圖片url地址,如:
1 CHN 822 -----> 1.jpg
sql語句:
SELECT nation_id, Nation, count(Nation) .......(多出一個欄位即可)
然後循環展示如下格式html代碼:
<ul>
<li><img src="./images/{nation_id}.jpg" alt="{國家中文名}"/></li><li>{count(Nation)}</li>
</ul>
求給分啊

G. 如何利用PHP執行.SQL文件

以下代碼來自PHPBB的SQL文件解析類,原理就是逐行的解釋SQL文件,並進行刪除等操作,可以參照修改。希望能幫到你。

<?php
ini_set('memory_limit','5120M');
set_time_limit(0);
/***************************************************************************
*sql_parse.php
*-------------------
*begin:ThuMay31,2001
*right:(C)2001ThephpBBGroup
*email:[email protected]
*
*$Id:sql_parse.php,v1.82002/03/1823:53:12psotfxExp$
*
****************************************************************************/

/***************************************************************************
*
*Thisprogramisfreesoftware;youcanredistributeitand/ormodify
*
*theFreeSoftwareFoundation;eitherversion2oftheLicense,or
*(atyouroption)anylaterversion.
*
***************************************************************************/

/***************************************************************************
*
*_utilitiesundertheadmin
*,specifically
*
*functionsintothisfile.JLH
*
***************************************************************************/

//
//remove_
//....
//
functionremove_comments(&$output)
{
$lines=explode(" ",$output);
$output="";

//trytokeepmem.usedown
$linecount=count($lines);

$in_comment=false;
for($i=0;$i<$linecount;$i++)
{
if(preg_match("/^/*/",preg_quote($lines[$i])))
{
$in_comment=true;
}

if(!$in_comment)
{
$output.=$lines[$i]." ";
}

if(preg_match("/*/$/",preg_quote($lines[$i])))
{
$in_comment=false;
}
}

unset($lines);
return$output;
}

//
//remove_
//
functionremove_remarks($sql)
{
$lines=explode(" ",$sql);

//trytokeepmem.usedown
$sql="";

$linecount=count($lines);
$output="";

for($i=0;$i<$linecount;$i++)
{
if(($i!=($linecount-1))||(strlen($lines[$i])>0))
{
if(isset($lines[$i][0])&&$lines[$i][0]!="#")
{
$output.=$lines[$i]." ";
}
else
{
$output.=" ";
}
//Tradingabitofspeedforlowermem.usehere.
$lines[$i]="";
}
}

return$output;

}

//
//split_sql_.
//Note:expectstrim()tohavealreadybeenrunon$sql.
//
functionsplit_sql_file($sql,$delimiter)
{
//Splitupourstringinto"possible"SQLstatements.
$tokens=explode($delimiter,$sql);

//trytosavemem.
$sql="";
$output=array();

//wedon'.
$matches=array();

//thisisfasterthancallingcount($oktens)everytimethrutheloop.
$token_count=count($tokens);
for($i=0;$i<$token_count;$i++)
{
//Don'.
if(($i!=($token_count-1))||(strlen($tokens[$i]>0)))
{
//.
$total_quotes=preg_match_all("/'/",$tokens[$i],$matches);
//,
//whichmeansthey'reescapedquotes.
$escaped_quotes=preg_match_all("/(?<!\\)(\\\\)*\\'/",$tokens[$i],$matches);

$unescaped_quotes=$total_quotes-$escaped_quotes;

//,.
if(($unescaped_quotes%2)==0)
{
//It'sacompletesqlstatement.
$output[]=$tokens[$i];
//savememory.
$tokens[$i]="";
}
else
{
//incompletesqlstatement..
//$tempwillholdwhatwehavesofar.
$temp=$tokens[$i].$delimiter;
//savememory..
$tokens[$i]="";

//Dowehaveacompletestatementyet?
$complete_stmt=false;

for($j=$i+1;(!$complete_stmt&&($j<$token_count));$j++)
{
//.
$total_quotes=preg_match_all("/'/",$tokens[$j],$matches);
//,
//whichmeansthey'reescapedquotes.
$escaped_quotes=preg_match_all("/(?<!\\)(\\\\)*\\'/",$tokens[$j],$matches);

$unescaped_quotes=$total_quotes-$escaped_quotes;

if(($unescaped_quotes%2)==1)
{
//oddnumberofunescapedquotes.
//statement(s),wenowhaveacompletestatement.(2oddsalwaysmakeaneven)
$output[]=$temp.$tokens[$j];

//savememory.
$tokens[$j]="";
$temp="";

//exittheloop.
$complete_stmt=true;
//.
$i=$j;
}
else
{
//evennumberofunescapedquotes.Westilldon'thaveacompletestatement.
//(1oddand1evenalwaysmakeanodd)
$temp.=$tokens[$j].$delimiter;
//savememory.
$tokens[$j]="";
}

}//for..
}//else
}
}

return$output;
}

$dbms_schema='yourfile.sql';

$sql_query=@fread(@fopen($dbms_schema,'r'),@filesize($dbms_schema))ordie('problem');
$sql_query=remove_remarks($sql_query);
$sql_query=split_sql_file($sql_query,';');

$host='localhost';
$user='user';
$pass='pass';
$db='database_name';

mysql_connect($host,$user,$pass)ordie('errorconnection');
mysql_select_db($db)ordie('errordatabaseselection');

$i=1;
foreach($sql_queryas$sql){
echo$i++;
echo"
";
mysql_query($sql)ordie('errorinquery');
}

?>