【问题标题】:PDO query error [closed]PDO查询错误[关闭]
【发布时间】:2014-05-11 21:15:24
【问题描述】:

为什么这些 PHP 行不起作用?

我正在使用 PDO。

谢谢。

-

if($arr['target_action']=="new") {
    $query = $pdo->prepare('INSERT INTO ___Bookings VALUES ("", ":hotel_id", ":BOO_RoomId", ":BOO_ClientId", ":BOO_DateCI", ":BOO_DateCO", ":BOO_Rate", "", "", "'.date('Y-m-d H:i:s').'", ":BOO_Status")');
    $query->execute(array(':BOO_RoomId' => $arr['rid'], ':BOO_ClientId' => $arr['BOO_ClientId'], ':BOO_DateCI' => $arr['cid'], ':BOO_DateCO' => $arr['cod'], ':BOO_Rate' => $arr['BOO_Rate'], ':BOO_Status' => $arr['BOO_Status'], ':hotel_id' => $_SESSION['CurrentLogged_HOT_HotelId'])); 
}

【问题讨论】:

  • 定义“不工作”!
  • 在开发过程中,如果您还没有这样做,请在打开连接后立即添加$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  • @Fred-ii-:不应该在任何情况下都这样做,而不仅仅是在开发期间?!
  • 在过去的两周里,我被多次告知在开发后不使用错误报告。我有点处于“如果我这样做就该死,如果我不这样做该死”的情况。 @ThiefMaster
  • 您不应该在生产中显示错误(对您的用户)。但是,您应该记录它们,以便只有你可以看到它们。

标签: php pdo


【解决方案1】:

您需要删除占位符周围的引号。

if($arr['target_action'] == "new") {
    $query = $pdo->prepare("INSERT INTO ___Bookings VALUES ('', :hotel_id, :BOO_RoomId, :BOO_ClientId, :BOO_DateCI, :BOO_DateCO, :BOO_Rate, '', '', :Date, :BOO_Status)");
    $query->execute(array(':BOO_RoomId' => $arr['rid'], ':BOO_ClientId' => $arr['BOO_ClientId'], ':BOO_DateCI' => $arr['cid'], ':BOO_DateCO' => $arr['cod'], ':BOO_Rate' => $arr['BOO_Rate'], ':BOO_Status' => $arr['BOO_Status'], ':hotel_id' => $_SESSION['CurrentLogged_HOT_HotelId'], ':Date' => date('Y-m-d H:i:s'))); 
}

另外,你为什么对日期使用字符串插值?!也为那个使用占位符!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 2015-08-23
    • 2012-12-29
    相关资源
    最近更新 更多