动态变量PDO

时间:2016-03-14 22:24:40

标签: php mysql pdo

我正在使用PDO来更新我的数据库。我正在使用循环来显示输入框中的ID和值。现在我有:

foreach ($data as $row): ?>
    <form action="" method ="post">
        <input type="text" name="Name[<?=$row['ID']?>]">
        <input type="hidden" name="NameID[<?=$row['ID']?>]" value="<?=$row["ID"]?>">
        <input type="submit" class="button" value="Submit" name="NameEnter[<?=$row["ID"]?>]">
    </form>
<?endforeach?>

显然会输出名称[1],名称[2]等

对于我的PDO,当我去更新它时,我该如何获得

$name = $_POST["Name"];
$ID = $_POST["ID"];
if(isset($_POST['NameEnter'])) {
$update = $db->prepare("UPDATE Table SET Name = ? WHERE ID = ?");
$update->execute(array($name,$ID));
}

它不断输出ARRAY的值而不是实际输入的值。我认为它与$name循环是一样的吗?

2 个答案:

答案 0 :(得分:2)

每次循环该循环,您创建一个单独的表单,您不需要输入字段的复杂命名约定

border

然后是一段简单的代码,可以很容易地找出$ _POST数组中的字段名称。

foreach ($data as $row): ?>
    <form action="" method ="post">
        <input type="text" name="Name">
        <input type="hidden" name="ID" value="<?=$row["ID"]?>">
        <input type="submit" class="button" value="Submit" name="NameEnter">
    </form>
<?endforeach?>

答案 1 :(得分:0)

查看bindValue

语法:$stmt->bindValue(':placeholder', $value, PDO::PARAM_TYPE);

$update = $db->prepare("UPDATE Table SET Name = :name WHERE ID = :id");
$update->bindValue(':name', $name, PDO::PARAM_STR);
$update->bindValue(':id', $id, PDO::PARAM_INT);
$update->execute();