2017-03-17 96 views
0

我試着用下面的PHP連接到SQL Server驅動程序連接到SQL Server:PHP無法使用PDO-例外

它工作正常的MYSQL,但不用於SQL Server。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$data = json_decode(file_get_contents('php://input'), true); 

if(!empty($data)): 
header('Content-Type:text/plain'); 
$hostname = '10.8.8.9';     
$username = 'siddharth'; 
$password = '1234'; 
$dbname = 'AirportFootfall'; 
$mssqldriver = '{SQL Server}'; 
//$dbh = new PDO("mssql:host=$hostname;dbname=AirportFootfall", $username, $password); 
//$dbh = new PDO("sqlsrv:Server=10.16.34.90;Database=AirportFootfall", $username, $password); 
//$dbh = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=AirportFootfall", $username, $password); 
//$dbh = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=AirportFootfall", $username, $password); 
//$dbh = new PDO("dblib:host=$hostname;dbname=AirportFootfall", $username, $password); 
//$dbh = new PDO("dblib:host=$hostname;dbname=$dbname", $username, $password); 
$dbh = new PDO("dblib:host=$hostname;dbname=$dbname", $username, $password); 
$arraykey=array_keys($data); 
$array=$data[$arraykey[0]]; 

try 
{ 

    $count = $dbh->exec('INSERT INTO RadioCon_Sensor_Raw_Data(version,visitorId,dwellTime,poiId,srId,zoneId,poiProximityConfidence,zoneProximityConfidence,poiPresenceConfidence,zonePresenceConfidence,normalizedTime) VALUES ("' . implode('", "', $array) . '")') or die(print_r($dbh->errorInfo(), true)); 
//echo $count; 
$dbh = null; 
echo 'Data Successfully inserted!!<br />'; 
} 
catch(PDOException $e) 
{ 
    echo $e->getMessage(); 
} 

endif; 
?> 

更新:安裝了pdo_dblib擴展。

即時得到

Fatal error: Uncaught exception 'PDOException' with message 'could not find driver' in /var/www/html/RADIOLOCOUS/GMR/gmrsample_copy.php:14 Stack trace: #0 PDO->__construct('odbc:Driver={SQ...', 'siddharth', '1234') #1 {main} thrown in ....line 14

任何替代方法,從PDO與PHP

即時通訊使用Ubuntu 14.04 LAMP除了連接5.5

我php_info說:

PDO drivers dblib, mysql

+1

我希望爲你着想的用戶名和密碼是錯誤的。 – Option

+2

的[PDO返回錯誤「找不到驅動程序」可正常工作的DSN]可能的複製(http://stackoverflow.com/questions/31813574/pdo-returning-error-could-not-find-driver-with-a -known-working-dsn) – aynber

+0

啓用php_pdo_mssql。 http://stackoverflow.com/questions/11246007/pdo-mssql-server-driver-not-found – MiltoxBeyond

回答

0

它看起來像$ mssqldriver var被評論...你試圖取消註釋?如果你仔細看的連接語句使用VAR:

$dbh = new PDO("odbc:Driver=$mssqldriver;Server=$hostname;Database=AirportFootfall", $username, $password); 
+0

ALSE,請確保你已經安裝了「PHP5,SYBASE」 – uTombou

+0

已經更新了我的回答@uTombou,都願意花太多的時間,真的需要解決這個問題... – Sach

+0

任何其他的替代品此修復程序,更新了我的問題與代碼 – Sach

1

PDO_DBLIB文檔顯示以下的DSN:

mssql:host=localhost;dbname=testdb 
dblib:host=localhost;dbname=testdb 

所以,我想建議是:

$dbh = new PDO("dblib:host=$hostname:1433;dbname=AirportFootfall", $username, $password); 

您可以測試您的連接是這樣的:

<?php 
header('Content-Type:text/plain'); 
$hostname = '10.8.8.9';     
$username = 'siddharth'; 
$password = '1234'; 
$dbname = 'AirportFootfall'; 
try { 
    $dbh = new PDO("dblib:host=$hostname:1433;dbname=$dbname", $username, $password); 

    $sql = "SELECT 'It is working' AS name"; 
    foreach ($dbh->query($sql) as $row) { 
     print $row['name'] . "\n"; 
    } 
} catch (PDOException $ex) { 
    print $ex->getMessage(); 
}  
?> 
+0

評論不適用於擴展討論;這個對話已經[轉移到聊天](http://chat.stackoverflow.com/rooms/138403/discussion-on-answer-by-gus27-php-unable-to-connect-to-sql-server-using- PDO-EXC)。 –