我正在尝试更新表中的指定行而没有成功或错误消息。我$ _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']);
?>
答案 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'; }