繁体   English   中英

动态可变PDO

[英]Dynamic Variable 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?>

显然会输出类似Name [1],Name [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被循环成同一件事有关吗?

每次循环时,您都会创建一个单独的表单,因此不需要为输入字段使用复杂的命名约定

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?>

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

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

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM