首页 > 解决方案 > 什么数据存储在我的 POST 表单中的 SELECT 输入

问题描述

问题

我有一个带有下拉列表的表单,我需要将其中的 POSTDATA 放入 mysql 查询中,但我无法转换为日期时间。

我尝试过的事情

我尝试的第一件事: 中的值都是来自服务器表的日期时间。然后用户选择一个时间,然后使用 POST 将该时间保存在一个变量中。然后我尝试将变量内的值转换回查询中可用的时间。但这会产生以下错误:警告:mysql_query() 期望参数 2 是资源,在第 57 行的 reserveren.php 中给出 null

我尝试的第二件事:直接在查询中使用 POST 但这会产生以下错误:警告:mysql_query() 期望参数 2 是资源,在第 57 行的 reserveren.php 中给出 null

我尝试的第三件事:仍在转换值,但使用不同的方法并给出此错误:可捕获的致命错误:第 60 行的 Reserveren.php 中的类 DateTime 的对象无法转换为字符串

使用的代码

第一次尝试的代码如下所示:

$Tijd = date_create();
$Tijd->format(\DateTime::ISO8601);

$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '$Tijd' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);

第二次尝试的代码如下所示:

$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '" . $_POST["Tijd"] . "' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);

第三次尝试的代码如下所示:

$time = $_POST["Tijd"];
$Tijd = new DateTime("$time"); 

$result = mysql_query ("SELECT Voorstellingsnummer FROM voorstelling v WHERE Tijd = '$Tijd' AND v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);

这是表单代码:

$resultaat = mysql_query ("SELECT Tijd FROM voorstelling v WHERE v.Voorstellingsnummer NOT IN(SELECT r.Voorstellingsnummer FROM reserveringen r WHERE r.Voorstellingsnummer = v.Voorstellingsnummer GROUP BY r.Voorstellingsnummer HAVING COUNT(*) >= 50) AND Vestigingsnaam = '" . $_SESSION["geselecteerdvestiging"] . "' AND Filmnaam = '" . $_SESSION["geselecteerdfilmnaam"] . "';", $db);

$_SESSION["Tijd"] = $resultaat; //the selected Tijd records in this query are in datetime format on the server.

echo "<form action='reserveren.php' method='post'>
    <H3>Kies een Tijd</H3><br>
    <select name='Tijd'> ";
while ($row = mysql_fetch_array($_SESSION["Tijd"])) {
    echo "<option value='" . $row['Tijd'] ."'>" . $row['Tijd'] ."</option>";
}
echo "</select>
    <input type='submit' name='Reserveer' value='Reserveren'>
    </form>";

目前我只收到错误,但我想要的是在我的 mysql 查询中成功使用 $Tijd 变量。那么我从选择中得到什么样的数据并将其转换为可用的日期时间?

标签: phpmysqlforms

解决方案


由于@Nick,问题现在已经解决了。使用第二次尝试的代码它停止给我错误。我把查询放在我的数据库连接前面,这是错误的。

这仍然没有修复我的代码,但现在我至少知道如何更进一步。


推荐阅读