2016-09-24 57 views
0

我在控制器中有以下代码。一个链接到MediaWiki数据库查询给出运行:在Symfony中运行查询时出现错误结果,而不是PHPMyAdmin

// Grab the connection to the replica database (which is separate from the above) 
$conn = $this->get('doctrine')->getManager("replicas")->getConnection(); 

// Prepare the query and execute 
$resultQuery = $conn->prepare(" 
    SELECT 'id' as source, user_id as value FROM $dbName.user WHERE user_name = :username 
    UNION 
    SELECT 'arch' as source, COUNT(*) AS value FROM $dbName.archive_userindex WHERE ar_user_text = :username 
    UNION 
    SELECT 'rev' as source, COUNT(*) AS value FROM $dbName.revision_userindex WHERE rev_user_text = :username 
    UNION 
    SELECT 'groups' as source, ug_group as value FROM $dbName.user_groups JOIN user on user_id = ug_user WHERE user_name = :username 
"); 

$resultQuery->bindParam("username", $username); 
$resultQuery->execute(); 

(我知道我的SQL是没有效率的,那就是我的工作清理遗留代码)

第四查询的这个焦点题。当查询在PHPMyAdmin或MySQLWorkbench中运行时,它会返回正确的结果。但是,当在Symfony中运行时,它会返回不正确的结果。我怎样才能确保它返回正确的结果?

(全全码:https://github.com/Matthewrbowker/xtools-rebirth/blob/master/src/AppBundle/Controller/SimpleEditCounterController.php#L95

+1

你确定':用户名'是好的吗?你确定你在两个查询中使用相同的数据库吗? – COil

+0

是的,:用户名可以。不,每个查询都在单独的数据库上运行。 –

+1

所以......如果不是相同的数据库结果可能会有所不同。 – COil

回答

0

想通了我的问题。没有注意到的一件事是我从表中选择了正确的数据库名称。这存储在变量$ dbName中。但是,$ dbName可能与我从paramaters.yml连接到的数据库不同。

注:

JOIN user on user_id 

查询的这部分失踪$ DBNAME。要修复,只需添加变量。像这样:

JOIN $dbName.user on user_id 
相关问题