使用sqlsrv不能使用php运行MSSql查询

时间:2015-04-10 11:57:09

标签: php sql sql-server sqlsrv

有谁能想到如何在php中执行mssql查询:

我正在创建一个简单的php页面,它与sql-server成功连接但是当我尝试使用查询从表中获取数据时,它会给我错误。

Php代码

<?php   
 $serverName = "serverip"; //serverName\instanceName

    $connectionInfo = array( "Database"=>"DBname", "UID"=>"user", "PWD"=>"pass");
    $conn = sqlsrv_connect( $serverName, $connectionInfo);
    if( $conn === false ) {
         die( print_r( sqlsrv_errors(), true));
    }

    $sql = "SELECT name FROM dbo.test";
    $query = sqlsrv_query($conn, $sql);
    if ($query === false){  
    exit("<pre>".print_r(sqlsrv_errors(), true));
    }
    while ($row = sqlsrv_fetch_array($query))
    {  
        echo "<p>Hello, $row[name]!</p>";
    }
    sqlsrv_free_stmt($query);
?>

我的输出是:

Array
(
    [0] => Array
        (
            [0] => 42S02
            [SQLSTATE] => 42S02
            [1] => 208
            [code] => 208
            [2] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.test'.
            [message] => [Microsoft][ODBC Driver 11 for SQL Server][SQL Server]Invalid object name 'dbo.test'.
        )

)

如果您对此有任何疑问,请建议我。

谢谢

3 个答案:

答案 0 :(得分:1)

您的数据库名称在$connectionInfo看起来像您在此处复制并粘贴默认值)中声明,并且与您在查询中使用的数据库名称不匹配。

$connectionInfo = array( "Database"=>"aero", "UID"=>"user", "PWD"=>"pass");

您的查询使用dbo作为数据库名称。将其更改为aero(或此处包含的任何字符串):

$sql = "SELECT name FROM aero.test";

答案 1 :(得分:0)

你的SQL:

SELECT name FROM dbo.test

错误消息:

Invalid object name 'dbo.test'.

因此,您的数据库中还没有名为test的表。如果您只是想在不先创建表的情况下进行非常简单的查询,请执行类似......

的操作
SELECT 1

答案 2 :(得分:0)

您好,您不需要在查询中使用数据库名称,因为您执行此连接sqlsrv_query()本身。只需删除&#34; dbo&#34;从查询和尝试,它将工作...

如果您收到错误,请检查数据库和表名,并确保使用与您为数据库和表名命名相同的区分大小写