首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL中查找每个用户的行数

问在MYSQL中查找每个用户的行数
EN

Stack Overflow用户
提问于 2011-05-31 23:42:23
回答 6查看 340关注 0票数 1

我有用户的数据库,每个数据库都有表。我想遍历每个用户,并找到每个用户所共有的特定表的行数。因此,我连接到第一个DB(usersDB),并从表(Userinfo)行(User_name)中选取其他DB的名称。然后,我使用在userinfo中获得的名称连接到每个DB,并尝试查找它们在特定表(Products)上的行数。我试过了,但它们的行数都是一样的。有什么帮助吗??

代码语言:javascript
复制
<?php
  //db parameters
 $dbhost = "localhost";   
 $dbname = "usersDB";
$dbuser = "root";   
$dbpass = ""; 

mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());  
mysql_select_db($dbname) or die("MySQL Error: " . mysql_error());  


 //select main db
 $query  = "SELECT user_name FROM userinfo";
$result = mysql_query($query);
while($row = mysql_fetch_array($result, MYSQL_BOTH))
  {
$dbName =$row['user_name'];
  mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());  
  mysql_select_db("dbprefix_".$bName) or die("MySQL Error: " . mysql_error()); 

// do a query for each db
    $query = mysql_query('SELECT * FROM `products`');        
    $num_rows = mysql_num_rows($query);
   echo $dbName." has".$num_rows."products"."<br/>";
} 
  ?>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-05-31 23:52:48

这可能不是您的问题,但是我注意到您在查询之后没有关闭到每个数据库的连接。您应该将一个变量赋给mysql_select_db,然后像这样回显关闭数据库:

代码语言:javascript
复制
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die("MySQL Error: " . mysql_error());  
while($row = mysql_fetch_array($result, MYSQL_BOTH)){
   $dbName =$row['user_name'];
   $db = mysql_select_db("dbprefix_".$dbName, $conn) or die("MySQL Error: " . mysql_error()); 
    if( $db ){
        // do a query for each db
        $query = mysql_query('SELECT * FROM `products`');        
        $num_rows = mysql_num_rows($query);
        echo $dbName." has".$num_rows."products"."<br/>";

        mysql_close( $db );
    }
} 

还要注意,我将mysql_connect()行从while循环中去掉了,因为您不需要多次调用它。我还为mysql_connect()命令添加了$conn变量,这样您就可以在mysql_select_db()语句中使用$conn。这告诉select_db语句在哪个连接中查找这个数据库(只是更安全一点)。

票数 2
EN

Stack Overflow用户

发布于 2011-05-31 23:46:23

我想问题出在下面这行

代码语言:javascript
复制
mysql_select_db("dbprefix_".$bName) or die("MySQL Error: " . mysql_error());

我想这条线会是

代码语言:javascript
复制
mysql_select_db("dbprefix_".$dbName) or die("MySQL Error: " . mysql_error());
票数 3
EN

Stack Overflow用户

发布于 2011-05-31 23:47:15

似乎这里有一个打字错误:

代码语言:javascript
复制
 mysql_select_db("dbprefix_".$bName) or die("MySQL Error: " . mysql_error()); 

你是说"dbprefix_".$dbName而不是$bName吗?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6190091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档