使用准备好的语句一次查询两个数据库
Query Two Databases at once using Prepared statements
我有一个名为 getData($Books, $Users, $InputID); 的函数,它接收两个数据库连接和用户 ID。
在用户数据库中,我有一个名为 Users table
-----------------
UserID | UserName
-----------------
在图书数据库中,我有一个名为 Books
的 table
------------------------------
BookID | BookName | BookUserID
------------------------------
我想做的是编写 ONE 查询,它将:
Select Users table 上的用户 UserID = $InputID,还有 select Books Table 上的书,其中 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;
}
如果您的两个数据库(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;
如果您的两个数据库(UserDB、BooksDB)在不同的服务器上。
首先,您需要为其他服务器创建 link,然后使用 link 名称触发以下类似查询,让您的 link 名称为 LinkServer2,然后您从 server1.UserDB 触发查询。确保使用 linked 服务器的完全限定名称。
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 *),那么您可以毫无问题地做到这一点。
我有一个名为 getData($Books, $Users, $InputID); 的函数,它接收两个数据库连接和用户 ID。
在用户数据库中,我有一个名为 Users table
-----------------
UserID | UserName
-----------------
在图书数据库中,我有一个名为 Books
的 table ------------------------------
BookID | BookName | BookUserID
------------------------------
我想做的是编写 ONE 查询,它将:
Select Users table 上的用户 UserID = $InputID,还有 select Books Table 上的书,其中 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;
}
如果您的两个数据库(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;
如果您的两个数据库(UserDB、BooksDB)在不同的服务器上。 首先,您需要为其他服务器创建 link,然后使用 link 名称触发以下类似查询,让您的 link 名称为 LinkServer2,然后您从 server1.UserDB 触发查询。确保使用 linked 服务器的完全限定名称。
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 *),那么您可以毫无问题地做到这一点。