Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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_Database - Fatal编程技术网

Php 在单个表中显示MySQL结果

Php 在单个表中显示MySQL结果,php,mysql,database,Php,Mysql,Database,我创建了一个界面,用户可以在其中选择要显示的结果。用户选择的选项保存在一个数组中,因此MySQL查询将遍历该数组的不同元素 所以我想在一个表中显示结果。。。大概是这样的: 标题1|标题2 结果1-1 |结果1-2 结果2-1 |结果2-2 我的代码如下: $mark = $_POST['mark']; if (isset($_POST['mark']) && is_array($_POST['mark'])) { echo "<table border='1'>

我创建了一个界面,用户可以在其中选择要显示的结果。用户选择的选项保存在一个数组中,因此MySQL查询将遍历该数组的不同元素

所以我想在一个表中显示结果。。。大概是这样的:

标题1|标题2

结果1-1 |结果1-2

结果2-1 |结果2-2

我的代码如下:

$mark = $_POST['mark'];
if (isset($_POST['mark']) && is_array($_POST['mark'])) {
    echo "<table border='1'>";
    echo "<tr>";
    for ($i = 0; $i < count($mark); $i++) {
            echo "<th>" . $mark[$i] . "</th>";
    }
    echo "</tr>";

    for ($i = 0; $i < count($mark); $i++) {
        $markQuery = "SELECT $mark[$i] FROM marks LIMIT 10";
        $result = mysqli_query($DB_connection, $markQuery);
        echo "<tr>";
        while($row= mysqli_fetch_assoc($result)){
            echo "<td>" .  $row[$mark[$i]] . "</td>";
            }
        echo "</tr>";
        }
        echo "</table>";
}
$mark=$\u POST['mark'];
if(isset($\u POST['mark'])和&is_数组($\u POST['mark'])){
回声“;
回声“;
对于($i=0;$i

我不确定第二个循环是否是一个好主意,但我不知道应该怎么做才能显示我想要的结果。

首先尝试获取所有列,然后将其添加到
sql
查询,无需循环数据库查询

$mark = $_POST['mark'];
if (isset($_POST['mark']) && is_array($_POST['mark'])) {
    echo "<table border='1'>";
    echo "<tr>";
    for ($i = 0; $i < count($mark); $i++) {
            echo "<th>" . $mark[$i] . "</th>";
    }
    echo "</tr>";

    $sql = implode(',', $_POST['marks']);

    $markQuery = "SELECT ".$sql." FROM marks LIMIT 10";
    $result = mysqli_query($DB_connection, $markQuery);
    echo "<tr>";
    while($row= mysqli_fetch_assoc($result)){
        echo "<td>" .  $row[$mark[$i]] . "</td>";
    }
    echo "</tr>";
    echo "</table>";
}
$mark=$\u POST['mark'];
if(isset($\u POST['mark'])和&is_数组($\u POST['mark'])){
回声“;
回声“;
对于($i=0;$i
我知道这不是你问题的答案,但当你将未经验证的输入放入SQL语句时,你的代码容易受到SQL注入的攻击,并且容易受到XSS攻击,因为你将未经验证的用户输入输出到HTML,可用于将任何Javascript代码写入目标网页。你不应该每次都查询数据库时间是因为它不是有效的方式。相反,我会添加一个名为
type
的新列,从表中获取所有记录,然后使用php按新列对其进行过滤。与其在循环中创建查询列,不如使用
improde
函数,如
$sql=improde(',',$\u POST['marks'))
@czeski。我会编辑我的答案,谢谢你Holpducki和czeski谢谢你的建议。最后,我修改了代码,并使用函数“内爆”和“str_替换”,不再使用循环。我在这一领域完全是新手,所以我会尝试了解更多关于你所说的内容。谢谢你的警告!