编辑:我的错误是db中的拼写错误 - 所有记录在代码开头都有一个额外的空格,除了第一个 - 这就是为什么我只得到第一条记录
它是最简单的查询 - 我找到带有值为1的相应code
和active
字段的记录。如果有这样的记录,我将其active
字段更新为0。
# MySQL with PDO_MYSQL
$DBH = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass);
$DBH->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
$sql = "SELECT * FROM codes WHERE code=? AND active=1";
$STH = $DBH->prepare($sql);
$STH->setFetchMode(PDO::FETCH_ASSOC);
$result = $STH->execute(array($_POST["code"]));
$row = $STH->fetchAll();
echo "<pre>", var_dump($row), "</pre>";
echo $result , " rows: " . $STH->rowCount();
if($STH->rowCount() == 0){
echo "Error - this code is inactive";
}else{
echo "Code succesfully activated";
$STH = $DBH->prepare("UPDATE codes SET active=0 WHERE code=?");
$STH->execute(array($_POST["code"]));
}
但它仅适用于第一条记录847BKX
。如果我尝试搜索其他内容,即使active
字段仍为1,它也始终返回0行。
以下是来自数据库的快照 - code
字段的索引varchar
长度为255.为什么它只适用于第一条记录而不是其他记录??
答案 0 :(得分:0)
我如何看到它不适用于任何字段,因为您的更新语句说如果找到则将活动更新为0。我不确定你是否从
获得任何东西array($_POST["code"]);
如果它只是一个输入字段,那么只需使用
$_POST["code"];
答案 1 :(得分:0)
如果要在占位符中包含多个值,则需要循环
foreach($_POST["code"] as $Row){
$STH->execute($Row)
}