gpt4 book ai didi

php - 在 PHP 中获取一组行的程序具有相同的代码结构,但在另一行上没有结果

转载 作者:行者123 更新时间:2023-11-29 17:32:57 25 4
gpt4 key购买 nike

美好的一天。因此,我有一个程序,它将根据我在 HTML 中的选择选项中单击的选择选项从 MySql 获取一组行,并将其显示到 HTML 中的容器中。该代码适用于第一个,但不知何故在第二个上它没有获取我请求的行。我已经检查了列名称是否正确以及选择选项的值是否与我的 PHP 代码中的“if 语句”匹配。

在第一段代码中,它工作正常,

if($_POST["FilterDoc"]=="document_type")
{
$result=mysqli_query($conn,"SELECT * FROM records ORDER BY document_type ASC");
$data = "";
while($rows = mysqli_fetch_assoc($result)){
$document_type = $rows['document_type'];
$date_received = $rows['date_received'];
$application_no = $rows['application_no'];
$hei = $rows['hei'];
$school_name = $rows['school_name'];
$from_co = $rows['from_co'];
$other_govt = $rows['other_govt'];
$contact_person = $rows['contact_person'];
$comment = $rows['comment'];
$program = $rows['program'];
$year_level = $rows['year_level'];
$academic_year = $rows['academic_year'];
$transaction_no = $rows['transaction_no'];

$output = "<table><tr><td>$document_type</td><td>$date_received</td><td>$application_no</td><td>$hei</td><td>$school_name</td><td>$from_co</td><td>$other_govt</td><td>$contact_person</td><td>$comment</td><td>$program</td><td>$year_level</td><td>$academic_year</td><td>$transaction_no</td></tr></table><br>";
$data .= '<a href = "editdoc.php?v='.$transaction_no.'" name="documents">'.$output.'</a>';
}
echo $data ;

}

但是在第二个代码上,即使它具有相同的代码结构,也无法像我希望的那样工作,

else if($_POST["FilterDoc"]=="other")
{

$result=mysqli_query($conn,"SELECT * FROM records ORDER BY other_govt ASC");
while($data = mysql_fetch_assoc($result))
$data = "";
while($rows = mysqli_fetch_assoc($result)){
$document_type = $rows['document_type'];
$date_received = $rows['date_received'];
$application_no = $rows['application_no'];
$hei = $rows['hei'];
$school_name = $rows['school_name'];
$from_co = $rows['from_co'];
$other_govt = $rows['other_govt'];
$contact_person = $rows['contact_person'];
$comment = $rows['comment'];
$program = $rows['program'];
$year_level = $rows['year_level'];
$academic_year = $rows['academic_year'];
$transaction_no = $rows['transaction_no'];

$output = "<table><tr><td>$other_govt</td><td>$document_type</td><td>$date_received</td><td>$application_no </td><td>$hei</td><td>$school_name</td><td>$from_co</td><td>$contact_person</td><td>$comment</td><td>$program</td><td>$year_level</td><td>$academic_year</td><td>$transaction_no</td></tr></table><br>";
$data .= '<a href = "editdoc.php?v='.$transaction_no.'" name="documents">'.$output.'</a>';
}
echo $data;
}

这是我选择选项的 HTML 代码,

<select name = "FilterDoc" onchange = "filterby(this);">
<option selected disabled>Filter By</option>
<option value="document_type">Document Type</option>
<option value="date">Date</option>
<option value="hei">HEI</option>
<option value="other">Other Govt.</option>
<option value="person">Person</option></select>

我的数据库中的列名称 other_govt 不是主键并且具有重复值。我将衷心感谢您的帮助。谢谢你!

最佳答案

运行查询SELECT * FROM records ORDER BY other_govt ASC从 MySQL CLI 或 PHPMyAdmin 以确保其正常工作。检查错误代码 mysqli_query() .

此循环会静默删除所有结果行:

while($data = mysql_fetch_assoc($result))
$data = "";

所以这是一个错误。

您可能会发现使用 extract() 更容易函数拉取所有 $row值到局部变量中。或者使用mysqli_fetch_ojbect($result)然后使用 ...<td>{$rows->document}</td>...生成输出。

使用 htmlspecialchars() 将输出到 HTML 的字符串转义通常也是一个好主意。 。假设关联数组:

您的代码将为每一行生成一个表,这可能不是您想要的。把<table>循环外的标签,<tr>在每行的循环内,然后您可以迭代列值:

foreach ($rows as $col => $val) {
$output .= '<td>'.htmlspecialchars($val).'</td>';
}

您可以通过在 SELECT 中指定列来按表所需的顺序获取列。而不是使用SELECT * .

关于php - 在 PHP 中获取一组行的程序具有相同的代码结构,但在另一行上没有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50501002/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com