Php PDO使用bindValue调试更新查询

Php PDO使用bindValue调试更新查询,php,mysql,pdo,Php,Mysql,Pdo,我使用的是PDO,我找不到哪里出了问题,即使PDO的setAttribute设置为,也似乎找不到错误 $fields = $data['fields']; $cartID = $data['cartID']; $sql = "UPDATE ShoppingCart SET shipToSameLocation_shippingLocationID = :shippingLocationID, shipToSameLocation_shippin

我使用的是PDO,我找不到哪里出了问题,即使PDO的setAttribute设置为,也似乎找不到错误

    $fields = $data['fields'];
    $cartID = $data['cartID'];

    $sql = "UPDATE ShoppingCart 
            SET shipToSameLocation_shippingLocationID = :shippingLocationID, shipToSameLocation_shippingMethod = :shippingMethod, shipToSameLocation = 1
            WHERE cartID = :cartID";
    $query = $conn->prepare($sql);
    $query->bindValue(':shippingLocationID', $fields['shipToSameLocation_shippingLocationID'], PDO::PARAM_INT);
    $query->bindValue(':shippingMethod', $fields['shipToSameLocation_shippingMethod'], PDO::PARAM_STR);
    $query->bindValue(':cartID', $cartID, PDO::PARAM_INT);
    $query->execute();

其中是否有与PDO相关的错误?

可能是因为您明确表示该值将是int,但没有强制将post值转换为和int

$fields = $data['fields'];
$cartID = (int) $data['cartID'];

$sql = "UPDATE ShoppingCart 
        SET shipToSameLocation_shippingLocationID = :shippingLocationID, shipToSameLocation_shippingMethod = :shippingMethod, shipToSameLocation = 1
        WHERE cartID = :cartID";
$query = $conn->prepare($sql);
$query->bindValue(':shippingLocationID', $fields['shipToSameLocation_shippingLocationID'], PDO::PARAM_INT);
$query->bindValue(':shippingMethod', $fields['shipToSameLocation_shippingMethod'], PDO::PARAM_STR);
$query->bindValue(':cartID', $cartID, PDO::PARAM_INT);
$query->execute();
您绑定的其他值也是如此,所以将它们转换为正确的类型,或者更好的做法是不要使用bind value。就我个人而言,我从未费心绑定参数或值,我只是将关联数组传递给PDO

$locId = (int) $fields['shipToSameLocation_shippingLocationID'];
$method =  $fields['shipToSameLocation_shippingMethod'];
$cartId = (int) $data['cartID'];
$params = array(
    ':shippingLocationID' => $locId ,
    ':shippingMethod' => $method,
    ':cartID' => $cartId
);
$query->execute($params);

每一次都像一个魅力。在我工作的大多数地方,其他人最终都会采用这种方法,因为编码和使用起来麻烦要小得多,但这取决于你。

var\u dump($query->execute())
要找出并确保ID确实存在,如果通过ajax调用完成,该怎么办?仍然可以,请参阅浏览器的“网络”选项卡?每个ajax调用都在里面,您可以看到里面的响应是什么嗯,没有响应数据错误问题是因为我没有声明$conn为全局