2010-09-08 75 views
0

我目前正在尝试创建一个PHP脚本,其中已经创建了一个登录脚本,并且成功登录到home.php的用户能够查看他登录到的数据库的表。如何使用PHP会话查看MYsql数据库表?

是否有任何方式使用mySQL查询像“SHOW TABLES”检索表?

下面是我的一些代码:

<?php 
session_start(); 
if($_SESSION['id']) 
{ 
    echo "Welcome ",$_SESSION['username']."<br>"; 
    echo "Click here to Logout : ".'<br><a href="logout.php">Logout</a>'; 
} 
else 
{ 
    echo "You don't belong here!"; 
} 



$tableSQL = "SHOW TABLES"; 

$tablesoutput = mysql_query($tableSQL); 

print $tablesoutput; 

>

我想,有数字显示被拒绝的数据库访问错误我的代码是错误的?这是否意味着我必须重新连接到数据库,即使我已建立会话?

回答

0

一个会话只意味着存储在$_SESSION变量中的值在不同的请求中被持久化,但仅此而已。它不会“将用户登录到数据库中”,也不会打开数据库连接。您必须在每次加载页面时建立数据库连接。

mysql_query的结果还需要使用mysql_fetch_assoc。简单的print是不够的。

+0

而不是使用取,我也可以用mysql_result的? – JavaNoob 2010-09-08 08:20:09

+0

@Java当然,如果你愿意。你只需要*更专门用来处理MySQL结果的东西,'print'是不能做的。 – deceze 2010-09-08 08:23:53

0

每次执行skript时都需要连接到数据库。会话与您的数据库连接无关。

1

修改如下,以满足您的要求:

<?php 

$conn = mysql_connect("localhost","foo_dbo","pass") or die("Database error"); 

mysql_select_db("foo_db", $conn); 

$result = mysql_query("show tables"); 

if(!$result) die("Invalid query: " . mysql_error()); 

while ($row = mysql_fetch_array($result)){ 
    echo $row[0], "<br/>"; 
    //do stuff with the table names 
} 

mysql_free_result($result); 
mysql_close($conn); 

?> 
+0

增加答案的用处!谢谢! – JavaNoob 2010-09-08 09:20:13

相关问题