更新mysql,没有感情

时间:2016-05-14 11:20:22

标签: php mysql pdo

我正在尝试使用准备好的PDO语句更新MySql中的多个行。它不会发出任何错误,但行保持不变。我做错了什么?

为了在Stack Overflow上发布时的安全性,我用xxx替换了用户名,密码和数据库名称。

<?php
header('Access-Control-Allow-Origin: *');
$jsonp = false;

error_reporting(E_ALL); 
ini_set("display_errors", 1);

$db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');

$party = ($_POST['party']);
$id = ($_POST['id']); /* String with ids. Ex. "1, 2, 3" */
$state = ($_POST['state']);
$code = ($_POST['fetchCode']);

$stmt = $db->prepare("UPDATE wishes SET state = :state WHERE fetchCode = :code AND partyID = :party AND id IN (:id)");

$stmt->bindParam(':party', $party);
$stmt->bindParam(':id', $id);
$stmt->bindParam(':state', $state);
$stmt->bindParam(':code', $code);

$stmt->execute();

echo json_encode("Done");
?>

1 个答案:

答案 0 :(得分:0)

在你的$_POST['id']逗号后面有空格。请尽量避免使用逗号之前和之后的空格。

其次,您可以将第三个参数PARAM_STR添加到$stmt->bindParam(':id', $id,PARAM_STR);,以便在准备查询时将其视为字符串。

还要添加错误处理程序以查看错误:

if (!$stmt) { 
    echo "\nPDO::errorInfo():\n"; 
    print_r($db->errorInfo()); 
}

可以帮助调试的最后一件事是,您可以看到echo $stmt->queryString

准备的最终查询是什么