PDO更新,没有错误,DB中没有响应

时间:2014-09-09 22:16:26

标签: php pdo

我正在尝试更新表中的指定行而没有成功或错误消息。我$ _POST一个包含许多不同输入的表单,包括一个用于选择特定行(clubId)的表单。

I $ _POST并使用表单中输入的名称和值,在下面的代码中处理这些以进行查询。

但是,由于我没有收到任何错误消息或者我的代码有任何问题,除了针对注射的安全性,我不知道在哪里继续这个。

您是否看到可能导致此问题的代码有问题?否则,我应该如何处理,提示,方向,新的工作代码,能够处理表单,而无需在PHP代码中进行任何更大的更改(就像我在下面尝试)。

<?php 

include ('../../db_conn.php');

$nameArrayValue = array();

foreach($_POST as $name => $value) {
    if($name == 'clubId') {} else {
        $nameArrayValue[] = $name." = :".$name;
    }
}
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$values = implode(', ', $nameArrayValue);

$sql = "UPDATE random SET ".$values." WHERE id = :clubId";
$addRandom = $dbh->prepare( $sql );

foreach($_POST as $name => $value) {
        $name = ":".$name;
        $addRandom->bindParam($name, $value);
}

$addRandom->execute();

if($addRandom->rowCount() > 0) { echo' yaay'; }           

//header('Location: ' . $_SERVER['HTTP_REFERER']);

?>

1 个答案:

答案 0 :(得分:0)

代码中有两个错误:

$addRandom->bindParam(:clubId, 199);

我必须在clubId之前删除:然后将我的值更改为如下变量:

$addRandom->bindParam(clubId, $_POST['clubId']);

现在我的代码看起来像:

include ('../../db_conn.php');

$nameArrayValue = array();

foreach($_POST as $name => $value) {
    if($name == 'clubId') {} else {
        if(!empty($value)) {
            $nameArrayValue[] = $name." = :".$name;     
        }
    }
}

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$names = implode(', ', $nameArray);
$values = implode(', ', $nameArrayValue);

$sql = "UPDATE random SET ".$values." WHERE id = :clubId";
$addRandom = $dbh->prepare( $sql );

foreach($_POST as $name => $value) {
    if(!empty($value)) {
        $addRandom->bindParam($name, $_POST[$name]);
        $name = '';
    }
}


$addRandom->execute();

if($addRandom->rowCount() > 0) { echo 'yaay'; }