从 MS SQL Server 2005 到 PDO 中使用 WHERE 选择数据



我有这个问题。我应该使用PDO从数据库(MS SQL Server 2005)中选择数据。我有带函数的用户类。

public function select($sql, $array = array(), $fetchMode = PDO::FETCH_ASSOC) 
        { 
            //try... if not catch exception 
            try{ 
              $sth = $this->DBH_->prepare($sql); 
              foreach ($array as $key => $value) { 
                $sth->bindValue("$key", $value);                    
              } 
              // run the query 
              $sth->execute(); 
              return $sth->fetchAll($fetchMode); 
            } 
            catch(PDOException $e) { 
                echo "<p class="error_msg">Ошибка. Свяжитесь с программистами.</p>"; 
                file_put_contents('errors.log', date("Y-m-d H:i:s")." - ".$e->getMessage().". File:".$e->getFile().". Line: ".$e->getLine()."n", FILE_APPEND); 
                exit(); 
            } 
        }

当我将查询与 WHERE(字符串西里尔文)一起使用时,我没有得到任何结果。

$authArr = $DBH->select("   SELECT 
                                        id_tip_tovar 
                                    FROM 
                                        skladskiy_uchet.dbo.spr_tip_tovar 
                                    WHERE 
                                        tip_tovar = N'Тип товар 1'"); 

我该如何解决它?

附言对不起,如果我有语法错误。我的英语不是很好。

谢谢。。。

您必须将 FreeTDS 协议版本设置为高于 4.2,因为 nvarchar 列直到 sql server 2005(或在那里)才被引入,所以它们不能被编码到协议中。 编辑/etc/freetds/freetds.conf

[global]
;tds version = 4.2
tds version = 7.2

最新更新