有谁能想到如何在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'.
)
)
如果您对此有任何疑问,请建议我。
谢谢
答案 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;从查询和尝试,它将工作...
如果您收到错误,请检查数据库和表名,并确保使用与您为数据库和表名命名相同的区分大小写