Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在不知道列的情况下用PHP打印MySQL表_Php_Mysql - Fatal编程技术网

在不知道列的情况下用PHP打印MySQL表

在不知道列的情况下用PHP打印MySQL表,php,mysql,Php,Mysql,我目前正在制作一个私有的“列表管理”系统,在其中我将SQL查询存储在数据库中。因此,我可以通过前端创建新的“列表”(基本上是sql查询),并查看它们 我制作了前端,这样您就可以将查询保存到数据库中,我希望PHP执行并打印出我的一个查询的结果。当我在前端选择一个存储的“列表”时,就会发生这种情况。因此,当我按下其中一个列表时,它应该执行SQL查询。到目前为止,一切顺利 但是,在不知道存在多少列/哪些列的情况下,如何通过PHP打印一个表(比如查看表内容时从phpMyAdmin中获得的表)?我希望脚本

我目前正在制作一个私有的“列表管理”系统,在其中我将SQL查询存储在数据库中。因此,我可以通过前端创建新的“列表”(基本上是sql查询),并查看它们

我制作了前端,这样您就可以将查询保存到数据库中,我希望PHP执行并打印出我的一个查询的结果。当我在前端选择一个存储的“列表”时,就会发生这种情况。因此,当我按下其中一个列表时,它应该执行SQL查询。到目前为止,一切顺利

但是,在不知道存在多少列/哪些列的情况下,如何通过PHP打印一个表(比如查看表内容时从phpMyAdmin中获得的表)?我希望脚本是动态的,这样我就可以查看各种SELECT查询的结果(在不同的表上)


有什么提示吗?

show tables
可能是您需要的

echo "<table><tr>";
$sql = "SHOW TABLES FROM $dbname";
$result = mysql_query($sql);

while ($row = mysql_fetch_row($result)) {
    echo "<td> $row[0] </td>";
}
echo "</tr></table>"
mysql_free_result($result);
echo”“;
$sql=“显示来自$dbname的表”;
$result=mysql\u查询($sql);
while($row=mysql\u fetch\u row($result)){
回显“$row[0]”;
}
回声“”
mysql_free_result($result);

如果需要打印带有标题(列名)的行,则必须通过以下方式执行:

$result=mysql_query("SELECT * FROM yourtable WHERE 1");
if (mysql_num_rows($result)<1) echo "Table is empty";
else
{
   $row=mysql_fetch_assoc($result);
   echo "<table>";
   echo "<tr>";
   echo "<th>".join("</th><th>",array_keys($row))."</th>";
   echo "</tr>";

   while ($row)
   {
       echo "<tr>";
       echo "<td>".join("</td><td>",$row)."</td>";
       echo "</tr>";
       $row=mysql_fetch_assoc($result);
   }

   echo "</table>";
}
$result=mysql\u查询(“从表中选择*,其中1”);

如果(mysql_num_rows($result)不使用不推荐的库,请改用PDO

$db = new PDO($dsn); //$dsn is the database connection strings. Depends on your DB.
                     //it can be as simple as "odbc:CONN_NAME"
$stmt = $db->prepare("SELECT * FROM $tablename"); 
//be sure to sanitize $tablename! use a whitelist filter, not escapes!
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); //fetch as associative array
if($rows){
    //check if there are actual rows!
    $first_row = reset($rows); //Resets the internal pointer, return the first elem.

    $header_str = '<th>' . implode('</th><th>', array_keys($first_row)) . '</th>';
    $table_body_rows = array();
    foreach($rows as $row){
        $table_body_rows[] = '<td>' . 
                                implode('</td><td>', $row) . 
                             '</td>';
    }
    $body_str = '<tr>' . implode('</tr><tr>', $table_body_rows) . '</tr>';
    $tbl = "<table><thead><tr>$header_str</tr></thead><tbody>$body_str</tbody></table>";
} else {
    //something went wrong
}
$db=new PDO($dsn);//$dsn是数据库连接字符串。取决于您的数据库。
//它可以简单到“odbc:CONN_NAME”
$stmt=$db->prepare(“从$tablename中选择*);
//确保清理$tablename!使用白名单过滤器,而不是转义!
$stmt->execute();
$rows=$stmt->fetchAll(PDO::FETCH_ASSOC);//作为关联数组获取
如果($行){
//检查是否有实际行!
$first_row=reset($rows);//重置内部指针,返回第一个元素。
$header_str=''。内爆('',数组_键($first_row))。';
$table_body_rows=array();
foreach($行作为$行){
$table_body_rows[]=''。
内爆(“”,$row)。
'';
}
$body_str=''。内爆(''.$table_body_rows.);
$tbl=“$header\u str$body\u str”;
}否则{
//出了点问题
}

您可以通过mysql的数组索引显示这一点。\u fetch\u array function
如何从表中选择*
?嗨,John,我知道-但是我如何创建一个HTML表,第一行包含所有列名,然后为每个条目创建一行?而无需在脚本中指定f.instance$row[customer\u name]$row[phonenr]@HalayemAnis是的,这就是我要使用的查询。但是我怎样才能通过PHP以一种体面的外观打印出来呢?谢谢,但这不是我要找的。我有一个名为“listmgmt_list”的表,在这个表中,我有几个带有不同SQL查询的条目(在其中一列中)。所以当我提取其中一个查询时,我想运行它们。目前为止还不错。但是当我运行从我的表中得到的查询时,我如何打印出一个包含所有列和所有条目的表?通过PHP/HTMLok,对不起,我误读了这个问题。您可以使用
从我的表中显示列;
,然后打印列名在
标记之间创建一个表。然后在
标记之间查询内容并打印它。使用
mysqli
而不是
mysql
使用mysql\uuuu库是不受欢迎的不要建议使用不受欢迎的库!最好使用不受欢迎的库,而不要建议使用与您不同的库。如果我理解正确,您可以加载e将所有结果集放入关联数组,消耗的RAM是您应该消耗的2倍。然后,您使用RAM中的行构建整个HTML表,消耗的RAM是您应该消耗的3-4倍,而不是立即回显这些值。我甚至没有谈论您添加内爆数组键($first_row)的事实在foreach循环中重复(可能是一个输入错误,您应该改为内爆$row)。表决失败,抱歉。1.每个PHP数组都是一个关联数组,(它基本上是一个map,key=>value,使用数字或字符串作为键没有多大区别)2.立即回显是不好的,因为您没有将逻辑与表示分离。此代码段可以安全地放入函数中,并在任何地方、任何时间、任何方式重复使用。如果您直接回显,您就是将逻辑与表示混合在一起。老实说,我会构建一个数组,并将从数组到html表的转换委托给其他人。3.感谢您的输入错误通知,我的错误。进一步解释:是的,我的选择可能更占用RAM,但fetchAll通常比循环的单次提取调用快,循环的回音比后面跟着单次回音的字符串生成慢。与往常一样,内存和速度之间存在折衷。