【问题标题】:Passing date sql type in prepared statement with PDO使用 PDO 在准备好的语句中传递日期 sql 类型
【发布时间】:2018-10-17 11:35:00
【问题描述】:

我正在使用 000webhost 来托管我的网站。

我正在尝试实现这个流程:

  1. 接收关于给定日期和班次的文件;
  2. 删除数据库中存在的有关该日期和班次的任何信息;
  3. 插入接收到的信息;

我在执行第二步时遇到了问题。我使用的代码是这样的:

 $cleanupSql = "DELETE FROM `Turnos` WHERE Dia = :Dia AND Turno  = :Turno ";

 $cleanupSth = $conn->prepare($cleanupSql);

 (...)
 $temp = date_format($date,"Y-m-d");
 $cleanupSth->bindParam(':Dia',$temp,PDO::PARAM_STR);
 $cleanupSth->bindParam(':Turno',$splited[2],PDO::PARAM_STR);
 $cleanupSth->execute();

$temp 等于 2018-10-18 并且 splited[2] 为“1”。 date 类型的 dia 和 varchar 类型的 Turno。 PHP没有出现任何错误,但数据库没有改变。

我也试过用 ?参数,传递 dateTime 对象。

当我在数据库中运行此查询时,它可以工作

 DELETE FROM `Turnos` WHERE Dia = "2018-08-18" AND Turno  = "1"

编辑:我已修改脚本以运行查询,如下所示:

$cleanupSql = "DELETE FROM `Turnos` WHERE Turno  = :Turno ";

但它不会反映在数据库上。

【问题讨论】:

  • 2018-10-182018-08-10 不是同一个日期。您是否尝试过使用Dia = "2018-10-18" 在数据库中运行查询?
  • 2018-10-18 != 2018-08-10"
  • 写这个问题的时候打错了。对不起..
  • 你能显示查询吗? ($cleanupSth->queryString())
  • 它不会返回任何不同的东西。从Turnos 删除,其中 Dia = :Dia AND Turno = :Turno。是 ->queryString 吗?

标签: php mysql pdo prepared-statement web-hosting


【解决方案1】:

问题在于我获取 Turno 参数信息的方式。它没有正确消毒。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-30
    • 2013-12-28
    • 1970-01-01
    • 2010-11-18
    • 2017-09-29
    • 2010-11-30
    相关资源
    最近更新 更多