[英]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.