我有一个名为 getData($ Books,$ Users,$ InputID); 的函数,该函数接收两个数据库连接和用户ID。
在用户数据库上,有一个名为用户
的表-----------------
UserID | UserName
-----------------
在“图书”数据库上,有一个名为图书
的表 ------------------------------
BookID | BookName | BookUserID
------------------------------
我想做的是编写一个查询,该查询将:
在用户表上选择具有 UserID = $ InputID 的用户,并在 Books 表中选择图书,其中 BookUserID = $ InputID ;
这必须使用预准备语句来完成。 这就是我尝试过的。
function getData($Books, $Users, $InputID){
$fetch_results = prepare('SELECT * from UsersDB.Users U LEFT JOIN BooksDB.Books B ON B.BookUserID = U.UserID Where UserID = :InputID');
$fetch_results->execute(array(':userID' => $InputID));
return $Data;
}
答案 0 :(得分:1)
如果两个DB(UserDb,BooksDB)都位于同一服务器上,则查询将类似于
SELECT u.UserName, b.BookName
FROM UserDB.dbo.Users u
INNER JOIN BooksDB.dbo.Books b
ON b.UserId = b.BookUserId
WHERE u.UserId = $InputID
OR BookUserID = $InputID;
如果两个DB(UserDB,BooksDB)都位于不同的服务器上。 首先,您需要为其他服务器创建链接,然后使用链接名称触发以下类似查询,让您的链接名称为LinkServer2,然后从server1.UserDB触发查询。确保对链接服务器使用完全限定的名称。
SELECT u.UserName, b.BookName
FROM UserDB.dbo.Users u
INNER JOIN LinkServer2.BooksDB.dbo.Books b
ON b.UserId = b.BookUserId
WHERE u.UserId = $InputID
OR BookUserID = $InputID;
如果要使用LEFT JOIN并检索所有列数(SELECT *),则可以做到。