好吧,所以我对PHP和SQL / MySQL相当新,所以任何帮助都会受到赞赏。
我觉得我采取了正确的方法。我在php.net上搜索“MySQL show all tables names”,它返回了一个弃用的方法并建议在SHOW TABLES [FROM db_name] [LIKE 'pattern']
上使用MySQL查询我不确定“模式”是什么意思但是,我搜索了“SQL Wildcard”并得到“%”符号。根据我发现的一切,这应该工作并在最后输出表名,但事实并非如此。有什么建议?提前谢谢。
<?php
if ($_REQUEST["username"]=="coke"&&$_REQUEST["password"]=="pepsi"){
echo 'You have successfully logged in.';
echo '<br />';
echo 'These are your tables:';
echo '<br />';
$link = mysql_connect("sql2.njit.edu", "username", "password");
mysql_select_db("db_name") or die(mysql_error());
$result = mysql_query('SHOW TABLES [FROM db_name] [LIKE '%']');
echo $result;
}
else
echo 'You did not provide the proper authentication';
?>
我没有错误。输出正是回声,但没有表名。
答案 0 :(得分:44)
代码中的方括号在mysql文档中用于指示可选参数组。它们不应该在实际查询中。
您实际需要的唯一命令是:
show tables;
如果你想要来自特定数据库的表,让我们说数据库“books”,那就是
show tables from books;
如果要查找名称与特定模式匹配的表,则只需要LIKE部分。例如,
show tables from books like '%book%';
会显示名称中某处有“book”的表的名称。
此外,只运行“show tables”查询不会产生任何可以看到的输出。 SQL回答查询然后将其传递给PHP,但您需要告诉PHP将其回显到页面。
因为听起来你对SQL很新,所以我建议从命令行运行mysql客户端(或者使用phpmyadmin,如果它安装在你的系统上)。这样,您可以查看各种查询的结果,而无需通过PHP的函数来发送查询和接收结果。
如果你必须使用PHP,这是一个非常简单的演示。连接到数据库后尝试使用此代码:
$result = mysql_query("show tables"); // run the query and assign the result to $result
while($table = mysql_fetch_array($result)) { // go through each row that was returned in $result
echo($table[0] . "<BR>"); // print the table that was returned on that row.
}
答案 1 :(得分:7)
对于使用PDO statements
的人$query = $db->prepare('show tables');
$query->execute();
while($rows = $query->fetch(PDO::FETCH_ASSOC)){
var_dump($rows);
}
答案 2 :(得分:1)
查询应如下所示:
SHOW TABLES
SHOW TABLES FROM mydatabase
SHOW TABLES FROM mydatabase LIKE "tab%"
方括号[]中的MySQL文档中的内容是可选的。
答案 3 :(得分:1)
SHOW TABLES
将显示数据库中的所有表。如果您要过滤使用LIKE
和通配符%
SHOW TABLES FROM my_database LIKE '%user%'
将为您提供名称中包含“user”的所有表格,例如
users
user_pictures
mac_users
等
答案 4 :(得分:1)
示例的mysql文档中常用的括号应该在“真实”查询中省略。
您似乎也没有在任何地方回显mysql查询的结果。 mysql_query成功返回mysql资源。 php手册页还包含有关如何将mysql结果资源加载到数组中以进行回显和其他操作的说明。
答案 5 :(得分:0)
您需要将mysql_query分配给变量(例如$ result),然后显示此变量,就像显示数据库的正常结果一样。
答案 6 :(得分:0)
当然,您可以使用SHOW TABLES
查询数据库,然后遍历所有记录,但这是额外的代码行并且可以正常工作。
PHP有一个内置函数可以将所有表列入数组:
mysql_list_tables - 您可以在The PHP API page
找到有关它的更多信息
答案 7 :(得分:0)
// list_tables表示数据库所有表
$tables = $this->db->list_tables();
foreach ($tables as $table)
{
echo $table;
}