首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Uncaught时

问使用Uncaught时
EN

Stack Overflow用户
提问于 2022-09-07 07:08:48
回答 1查看 37关注 0票数 0

我曾使用sqlsrv_connect,但将其更改为PDO。

现在,我得到了这个语法错误时,使用奥格。

当我使用sqlsrv_connect时,我可以这样做:

代码语言:javascript
复制
SELECT Order, [Benämning], [Vår ref] FROM table

而且起作用了。

现在我想弄清楚如何用PDO来实现它。

所以我试着:

代码语言:javascript
复制
SELECT Order, [Benämning], Antal FROM table

并得到了以下错误:

操作数类型冲突:文本与浮动不兼容

我试过:

代码语言:javascript
复制
SELECT Order, Benämning, Antal FROM table

我犯了错误:

“�”附近的语法不正确。

在连接中,我添加了utf8:

代码语言:javascript
复制
$sql = new PDO("odbc:Driver=$driver;server=$serverName,$port;Database=$database;ConnectionPooling=0", $uid, $pwd,
        array(
            PDO::ATTR_PERSISTENT => true,
            PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
            PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"
        )
    );

现在,当我贴这个的时候我可以说:PDO::MYSQL_ATTR_I.我正在连接到SQL..。不是MYSQL。这会是问题吗?

如果删除“Ben mning”列,只选择没有空格的列,select就能正常工作。

更新

我用sqlsrv代替odbc来工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-07 07:50:51

在创建PDO实例时,只需使用相同的驱动程序(用于Server的)和相同的连接选项。

代码语言:javascript
复制
<?php

...

try
   $sql = new PDO("sqlsrv:Driver=$driver;server=$server,$port;Database=$database", $uid, $pwd);
   $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
   ... 
} catch( PDOException $e ) {
    ...
}

try {
    $sql = "SELECT [Vår ref], ... FROM ...";
    $stmt = $conn->prepare($sql);
    $stmt->execute();
} catch( PDOException $e ) {
    ...
}

?>

一些补充说明:

  • 需要引用列名([Vår ref]),才能使字符串文本成为有效的Server标识符。
  • 使用特定于驱动程序的PDO连接属性 (PDO::SQLSRV_xxx)添加驱动程序特定的特性。如果连接到PDO::MYSQL_ATTR_INIT_COMMAND实例,则MySQL选项非常有用。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73631381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档