gpt4 book ai didi

php - 如何对 mysql 数据库进行多部分 PHP 查询

转载 作者:行者123 更新时间:2023-11-29 01:05:21 24 4
gpt4 key购买 nike

我已经阅读了这里和其他网站上的数百篇帖子。我不太熟悉 PHP 和 mysql,但已经在 mysql 中构建了我的表,使用单个 list 调用它们并根据日期和时间过滤它们。但是,在多复选框领域,我似乎无法确定我在数组代码和自定义结果表中做错了什么。这是基本的 html:

<html> <body> <form method="POST" action="php/minute_feedback.php">
Date: <input type="text" name="from_date" id="from_date" value="2016-04-07">
<input type="checkbox" name="check_list[]" value="gate" id="gate">
<input type="checkbox" name="check_list[]" value="pressure" id="pressure">
<input type="checkbox" name="check_list[]" value="flow" id="flow">
<input type="submit" name="submit" value="submit">

这是基本的 PHP(我将只包括日期参数与日期和时间以使其更短,因为包含的内容是相同的):

<?php
$servername = "myhostaddress.com";
$username = "myusername";
$password = "mypassword";
$dbname = "mydatabasename";
$conn=new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);}
if($_POST['submit'] == "submit") {
$from_date = ($_POST['from_date']);
$to_date = ($_POST['from_date']);}
if(isset($_POST['submit'])) {

现在...我知道这里应该有某种数组代码,例如:

$checklist[] = $_POST[check_list];

但是 - 我不确定正确的语法/代码是什么。下一个问题是关于我的查询。我见过大多数查询使用 WHERE + IN 组合和“*”表示 SELECT。但是,我需要更接近于:

$sql = "SELECT Fdate, Ftime, (list of variable columns from the checked options such as 'gate', 'pressure', 'flow' --> but only if they've been checked) FROM minute_db WHERE Fdate BETWEEN '$from_date' AND '$to_date'";

$result = $conn->query($sql);}
if ($result->num_rows > 0) {

现在 - 至于我的表格标题,如果我要查找单个值,我可以使用以下代码:

echo "<table><tr><th>Date</th><th>Time</th><th>Level (ft)</th></tr>";}

但是,我需要用检查项目的结果(根据需要 1、2、3 或更多变量)以及日期和时间记录动态填充标题。

echo "<table>";}
else {
echo "0 results";}
$conn->close();
?>

我的最终结果是用户可以输入日期和时间范围并选择要显示的数据,例如,如果他们只想知道 2016 年 4 月 7 日的门设置和压力,他们会输入那个日期并选中这两个框,这样他们就会得到一个表格(下面没有格式 - 只是试图表示),例如:

Date       |     Time |   Gate Setting  |  Pressure 
----------------------------------------------------
2016-04-07 | 11:00 | 21 | 50

我最终会有一个表,其中包含数万行数据可供选择(并且将包括对可提取数据量的限制),以及最多 56 列变量可供选择。我没有使用任何特殊/花哨的数学函数来对时间段等进行分组 - 我已经手动将其全部分离并上传,因此它已准备就绪。我尝试了很多来自互联网的不同解决方案,但最终都失败了。 SELECT 的 * 选项看起来不像我的那样,IN 选项也不像 - 但我不确定(只是推测因为两者都没有用)。我在一个 netfirms mysql 平台上,所以它已经很更新了(我将把所有东西都改成 mysqli 以避免因不使用它而产生的任何问题——所以任何提前的反馈都会很棒!!我很感激任何想法你有!

最佳答案

感谢上面的 Deep 解决方案 - 它可以按原样完美运行!惊人的。至于表格数组的使用,我很挣扎,因为我可以填充表格,但得到了日期和时间的副本(如我在上面的回复中所述)。但是-我只是将脚本稍微移动了一下就可以了。现在,用户将返回包含日期、时间的列,然后是他们正在寻找的其他变量,并排在页面上,作为比较值(注意 - 我还没有达到 mysqli 或 pdo 的程度,所以如果这是旧的,请根据需要更新)。希望这会有所帮助 - 再次感谢!所以 - 从上面 Deep 帖子的 sql 行(完全填写)来看,这是表格 -->

$sql = "SELECT Fdate, {$wantedFields} Ftime FROM minute_db WHERE Fdate BETWEEN '$from_date' AND '$to_date' AND Ftime BETWEEN '$from_time' AND '$to_time'";

$result = $conn->query($sql);
}
if ($result->num_rows > 0) {
//header fields
echo "<table><tr><th>Date</th><th>Time</th>";
foreach($tableDynFields as $c) {
echo "<th>$c</th>";
}
echo "</tr>";
//results
while ($row = $result->fetch_assoc()) {
echo "<tr><td>".$row["Fdate"]."</td><td>".$row["Ftime"]." </td>";
foreach($tableDynFields as $c) {
echo "<td>".$row[$c]."</td>";
}
echo "</tr>";
}
echo "</table>";
//result set free
$result->free();
} else {
echo "query failed.<hr/>";
}
$conn->close();
?>

我唯一要补充的是,如果您必须像我一样过滤和排序尽可能多的数据——最好在选择语句的末尾放置一个强制限制器,或者类似的东西!

关于php - 如何对 mysql 数据库进行多部分 PHP 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37604305/

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