繁体   English   中英

无法使用MSSQL在PDO中引用表名

[英]Unable to quote table name in PDO with MSSQL

我必须与某人的数据库一起工作,这个游戏很遗憾地有一个名为“用户”或[dbo] [用户]的表,但这不能重命名。 现在,我需要在PHP中使用PDO访问它,当我使用此查询时:

$query = "SELECT UserId AS INTUSERID FROM dbo.User WHERE YahooId = 'abcdef'";

它失败了,因为“User”在那里是一个保留的关键字。 从MS SQL Server我可以这样做:

SELECT UserId AS INTUSERID FROM [GameName].[dbo].[User] WHERE YahooId = 'abcdef'

它的工作原理。 我应该如何在PHP中准备我的查询以使其执行? 我试图在表名周围加上单引号,但这没有效果。 什么是正确的使用方法

[GameName].[dbo].[User] 

从PHP PDO作为表名?

更新:这是我连接的方式:

try{
    $conn = new PDO("xxx.rds.amazonaws.com,1150;Database=xyz","admin","password");
    } catch(PDOException $e){
        echo "Connection failed: " . $e->getMessage();
    }

除了评论中的讨论之外,我提供了这个问题,以便问题得到答案。 我认为方括号在用于定义查询的php字符串中可以正常工作,所以我在我自己的使用PDO连接到MS-SQL的代码上测试了它。

所以以下应该有效......

$query = "SELECT UserId AS INTUSERID FROM dbo.[User] WHERE YahooId = 'abcdef'";

附注 - 如果您的YahooId来自可由用户操作的源(例如$ _GET),您应该使用PDO研究准备好的语句 ...

$query = "SELECT UserId AS INTUSERID FROM dbo.[User] WHERE YahooId = ?;";

$statement= $db->prepare($query);

$statement->execute(array($userinput));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM