2017-07-21 32 views
2

我在本地服務器上有一個本地MS SQL數據庫和IIS上的Web PHP應用程序。IIS,MS SQL和PHP - 在PHP中選擇SQL不起作用

在IIS我已經成功連接PHP和我的MS SQL數據庫(添加連接字符串,我看到我的表)

但是,當我在使用PHP的Web應用程序的任何SQL選擇,這是行不通的。沒有數據顯示,或任何誤差修改,例如:

/* Connect to a MySQL database using driver invocation */ 
$dsn = 'mysql:dbname=dbname;host=localhost'; 
$user = 'dbuser'; 
$password = 'dbpass';  
    try { 
     $dbh = new PDO($dsn, $user, $password); 
    } catch (PDOException $e) { 
     echo 'Connection failed: ' . $e->getMessage(); 
    }   
    $results = mysql_query("SELECT id FROM users"); 
    while($row = mysql_fetch_array($results)) { 
    $name = $row['id'] 
    ?> 
     <tr> 
      <td><?php echo '$name'?></td> 
     </tr> 
    <?php 
    } 
    ?> 
</tbody> 
</table> 
+0

嘗試添加錯誤報告---- error_reporting(E_ALL); ini_set('display_errors',1); – user3663

+1

爲什麼使用PDO進行連接,然後嘗試運行不推薦的'mysql_query'?永遠不要去工作 – RamRaider

+0

你知道MySQL和MS SQL(或SQL Server)不是一回事嗎? [mssql_ *](http://php.net/manual/en/book.mssql.php)或只是PDO **與正確的連接字符串**是你應該使用的。 – apokryfos

回答

2

遵循這樣的PDO連接

​​
0

混合這些API是行不通的 - 只使用PDO方法,這樣也許

/* Connect to a MySQL database using driver invocation */ 
try { 
    /* mysql server */ 
    /* $dsn = 'mysql:dbname=dbname;host=localhost'; */ 

    /* MS SQL Server */ 
    $dsn = 'sqlsrv:Database=dbname;Server=localhost'; 

    $user = 'dbuser'; 
    $password = 'dbpass'; 

    $dbh = new PDO($dsn, $user, $password); 
    $sql='select * from users'; 
    $results=$dbh->query($sql); 

    if($results){ 
     while($rs=$results->fetch(PDO::FETCH_OBJ)){ 
      echo "<tr><td>{$rs->name}</td></tr>"; 
     } 
    } 


} catch (PDOException $e) { 
    echo 'Connection failed: ' . $e->getMessage(); 
} 
+0

你好,這個工作,當顯示錯誤:) –

+0

連接失敗:SQLSTATE [HY000] [1045]拒絕訪問用戶'sa'@'localhost'(使用密碼:YES ) –

+0

我現在注意到(?)你正在使用'MS SQL數據庫'而不是'mysql' – RamRaider

1

請遵循代碼:

$host = '127.0.0.1'; 

$db = 'test'; 

$user = 'root'; 

$pass = ''; 

$charset = 'utf8'; 

$dsn = "mysql:host=$host;dbname=$db;charset=$charset"; 


$opt = 
[ 

PDO::ATTR_ERRMODE   => PDO::ERRMODE_EXCEPTION, 

    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, 

    PDO::ATTR_EMULATE_PREPARES => false, 

]; 

$pdo = new PDO($dsn, $user, $pass, $opt); 

$stmt = $pdo->query('SELECT name FROM users'); 

while ($row = $stmt->fetch()) 
{ 

    echo $row['name'] . "\n"; 
} 
1

MS SQL(或SqlSrv)和MySql不能用於相同的驅動程序。你必須知道你正在使用哪一個,並找到PHP函數來處理它。

注:PHP擴展使用驅動程序必須在服務器上安裝和php.ini文件

激活對於MySQL不使用mysql_xxx()已過時的功能,喜歡mysqli_xxx()給他們。

您可以在這裏找到文檔和示例代碼的MySQL都MSSQL & PHP函數:

MySql的

http://php.net/mysqli_connect

php.net/mysqli_fetch_array

SQLSRV

http://php.net/sqlsrv_connect

php.net/sqlsrv_fetch_array

那麼,什麼是你的數據庫引擎?

希望這會幫助你,歡呼聲

0

現在偉大的工作,還與選擇,與此代碼:

<?php 
$serverName = "AC-CLOUD"; //serverName\instanceName 
$connectionInfo = array("Database"=>"Data", "UID"=>"sa", "PWD"=>"Masterkey2010"); 
$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)); 
} 

$sql = "SELECT Code, Name FROM StoreCards"; 
$stmt = sqlsrv_query($conn, $sql); 
if($stmt === false) { 
    die(print_r(sqlsrv_errors(), true)); 
} 

while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
     echo $row['Code'].", ".$row['Name']."<br />"; 
} 

sqlsrv_free_stmt($stmt); 


    ?> 

我現在怎麼設置這個兩個值到表?這是最後一點。感謝您的耐心和時間。