在PDP中使用PDO(dblib)到SQL视图进行SELECT

时间:2017-07-27 11:47:19

标签: php sql pdo

我正在尝试执行SQL查询但它不起作用。

$sql = "SELECT top 5 AccountDocument from web.Preoffers_new where AccountDocument = 'xxxxxxxx'";
$stmt = $db->prepare($sql);
$stmt->execute();

if ($data = $stmt->fetch()) {
    do {
        echo $data['AccountDocument'] . '<br>';
    } while ($data = $stmt->fetch());
} else {
    echo 'Empty Query';
}

这很有效,并向我展示了结果。

但是这个:

$sql = "SELECT top 5 Document from Companies where Document = 'xxxxxxxx'";
$stmt = $db->prepare($sql);
$stmt->execute();

if ($data = $stmt->fetch()) {
    do {
        echo $data['Document'] . '<br>';
    } while ($data = $stmt->fetch());
} else {
    echo 'Empty Query';
}

直接转到空查询。但事实并非如此,因为如果我在SQL中执行该查询,它就能完美运行。

我看到的唯一不同的是第一个查询转到数据库中的表,第二个查询转到一个视图...

有些线索可能是这个吗?

    SET 
  ANSI_NULLS, 
  QUOTED_IDENTIFIER, 
  CONCAT_NULL_YIELDS_NULL, 
  ANSI_WARNINGS, 
  ANSI_PADDING 
ON;

更新----&gt;

我设置属性 PDO :: ATTR_ERRMODE,PDO :: ERRMODE_EXCEPTION ,看看服务器是否显示了我的东西,我收到了这个:

错误conectando con la base de datos:SQLSTATE [HY000]:常规错误:1934常规SQL Server错误:检查来自SQL Server的消息[1934](严重级16)[从公司文档中选择前5个文档='xxxxxxxx']

我检查了SQL中的错误,我得到了这个:

%ls失败,因为以下SET选项的设置不正确:'%。* ls'。验证SET选项是否适用于%S_MSG ..

任何人都知道为什么我不能在视图中进行查询?

感谢您阅读我:)

1 个答案:

答案 0 :(得分:0)

正如我在代码中看到的那样,您使用“Document”而不是“AccountDocument”,因此将AccountDocument替换为Document。

$sql = "SELECT top 5 Document from Companies where Document = 'xxxxxxxx'";
$stmt = $db->prepare($sql);
$stmt->execute();

if ($data = $stmt->fetch()) {
    do {
        echo $data['Document'] . '<br>';
    } while ($data = $stmt->fetch());
} else {
    echo 'Empty Query';
}