【问题标题】:What data is stored inside my POST form a SELECT input什么数据存储在我的 POST 表单中的 SELECT 输入
【发布时间】:2019-03-31 11:04:12
【问题描述】:

问题

我有一个带有下拉列表的表单,我需要将其中的 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 变量。那么我从选择中得到什么样的数据,我是否将其转换为可用的日期时间?

【问题讨论】:

  • 不推荐使用 mysql_* 转移到 mysqli_* 或 PDO
  • @devpro 我不能。这是一个我们正在学习 Mysql 的学校项目,如果这是一个问题,我很抱歉,但由于作业我不能使用 Mysql 以外的任何东西
  • @devpro 我也不确定我的老师是否希望我开始将 mysqli_* 添加到我的项目中,但如果转换很容易,这似乎是因为你只需要添加 'i'毕竟mysql_我可能会这样做,看看他的想法。但这会弄乱我的代码吗?该项目将在下周结束,我几乎完成了,如果转换使我的代码变得一团糟,我宁愿现在不做。
  • 不幸的是,您不能将mysql 更改为mysqli,有些函数采用不同的参数。
  • 前 2 次尝试收到的错误消息表明您尚未连接到数据库。你的$db = mysql_connect(...) 声明在哪里?

标签: php mysql forms


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多