我必须与某人的数据库一起工作,这个游戏很遗憾地有一个名为“User”或[dbo] [User]的表,但这不能重命名。 现在,我需要在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();
}
答案 0 :(得分:1)
除了评论中的讨论之外,我提供了这个问题,以便问题得到答案。我认为方括号在用于定义查询的php字符串中可以正常工作,所以我在自己的使用PDO连接到MS-SQL的代码上测试了它。
所以以下内容应该有效......
$query = "SELECT UserId AS INTUSERID FROM dbo.[User] WHERE YahooId = 'abcdef'";
旁注 - 如果您的YahooId来自可由用户操作的来源(例如$ _GET),您应该使用PDO研究Prepared Statements ...
$query = "SELECT UserId AS INTUSERID FROM dbo.[User] WHERE YahooId = ?;";
$statement= $db->prepare($query);
$statement->execute(array($userinput));