【发布时间】: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(...)声明在哪里?