【发布时间】:2017-11-12 12:36:12
【问题描述】:
我从 PHP 代码运行此更新查询:
$update_begin_insurance = "UPDATE `vehicles`
SET `begin_insurance_date` = '$begin_insurance'
WHERE `plate` = '$plate'";
$conn->query($update_begin_insurance);
$conn 是一个PDO 对象。
问题是$conn抛出任何异常,但是我数据库中的vehicles表没有更新。所以,我尝试直接通过phpmyadmin运行这个查询,并且运行正常,所以我认为这是一个PHP问题,但我无法弄清楚问题出在哪里。
我的begin_insurance_date 列的类型是DATE,而$begin_insurance 是一个格式正确的字符串(YYYY-MM-DD,我已经用2017-06-10 尝试过这段代码)。
我正在使用 MySQL DBMS
这是$update_begin_insurance 的echo:
UPDATE `vehicles`
SET `begin_insurance_date` = '2017-06-10'
WHERE `plate` = 'ccccc'
更新
这是我页面的完整 PHP 代码:
<?php
require_once "connect_db.php";
$plate = $_POST["plate"];
$begin_insurance = $_POST["begin_insurance"];
$end_insurance = $_POST["end_insurance"];
$fuel_economy = $_POST["fuel_economy"];
$fuel_type = $_POST["fuel_type"];
$response = array();
try
{
$conn->beginTransaction();
if ($begin_insurance != "")
{
$update_begin_insurance = "UPDATE `vehicles`
SET `begin_insurance_date` = '$begin_insurance'
WHERE `plate` = '$plate'";
$conn->query($update_begin_insurance);
}
if ($end_insurance != "")
{
$update_end_insurance = "UPDATE `vehicles`
SET `end_insurance_date` = '$end_insurance'
WHERE `plate` = '$plate'";
$conn->query($update_end_insurance);
}
if ($fuel_economy != "")
{
$update_fuel_economy = "UPDATE `vehicles`
SET `fuel_economy` = $fuel_economy
WHERE `plate` = '$plate'";
$conn->query($update_fuel_economy);
}
if ($fuel_type != "")
{
$update_fuel_type = "UPDATE `vehicles`
SET `id_fuel` = $fuel_type
WHERE `plate` = '$plate'";
$conn->query($update_fuel_type);
}
$response["post"] = $_POST;
$response["error_code"] = "0";
$response["error_message"] = "none";
$response["driver_error_code"] = "0";
}
catch (PDOException $e)
{
if ($conn->inTransaction())
{
$conn->rollBack();
}
$response["post"] = $_POST;
$response["error_code"] = $e->getCode();
$response["error_message"] = $e->getMessage();
$response["driver_error_code"] = $e->errorInfo[1];
}
echo json_encode($response);
?>
正如我之前所说,我没有遇到任何异常(如您所见,我还打印了 $_POST 数组以检查参数是否被正确接收,是的,它们是)。
这是echo json_encode($response) 打印的内容:
{
"post":
{
"plate":"ccccc",
"begin_insurance":"2017-06-10"
},
"error_code":"0",
"error_message":"none",
"driver_error_code":"0"
}
我确信连接工作正常,因为我有其他 PHP 文件执行一些 INSERT 查询,并且它们工作正常。
【问题讨论】:
-
您的代码产生的最终查询是什么?您是否尝试过使用准备好的语句?
-
@DainisAbols 我已经编辑了我的问题并打印了我的查询。是的,我已经尝试过准备好的语句,但它仍然不起作用
-
连接是否有效?
$conn->query('select now()'); -
@chris85 是的,它有效
-
更新后的查询(正是你回显的那个)在 phpmyadmin 中有效吗?抛出的异常是什么?它应该向您显示它是查询错误还是数据库连接或其他问题。您是否连接到您在 phpmyadmin 中使用的同一数据库?