我必须为某游戏使用某人的数据库,该数据库可悲的是有一个名为“ 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(); }
在评论中的讨论之后,我将提供此信息,以便使问题得到解答。我认为方括号在用于定义查询的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));