当我点击此按钮时,我的页面将被转发到removeRowValue.php页面:
<a href="/includes/incl/removeRowValue.php?name=ontvangenklantdatum"><button type="button" class="btn btn-default">Empty</button></a>
我的removeRowValue.php页面:
<?php
session_start();
$str = (int) $_SESSION['rights'];
$accptList = array(1,3);
if(!in_array($str, $accptList)){
header('Location: index.php?pagina=login');
}
require('conn.inc.php');
$getName = filter_input(INPUT_GET, "name", FILTER_SANITIZE_STRING);
$columnName = 'rd_' . $getName;
$artCode = $_SESSION['artcode'];
$getadmrmaid = $_SESSION['getadmrmaid'];
$delRmaDetVal = $dbh->prepare("UPDATE rma_detail LEFT JOIN rma ON rma_detail.rd_rma_id=rma.r_id SET $columnName = NULL WHERE rd_artikel_code = :artcode AND r_nr = :getadmrmaid");
$delRmaDetVal->bindParam(':artcode', $artcode, PDO::PARAM_STR);
$delRmaDetVal->bindParam(':getadmrmaid', $getadmrmaid, PDO::PARAM_INT);
$delRmaDetVal->execute();
?>
我已将NULL更新为某个值(即:2014-12-2),但现在我想在我点击上面的按钮时将其恢复为NULL但这不起作用。我没有收到任何错误。
答案 0 :(得分:4)
你有
$artCode = $_SESSION['artcode'];
在绑定中使用$artcode
。注意小写的“c”。
变量区分大小写。因此,您需要将其更改为$artCode
使用error reporting会发出一个未定义的变量。
在打开连接后立即添加$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
。
将错误报告添加到文件的顶部,这有助于查找错误。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
在评论中引用Dan Farrell:
“超出了问题的范围,但从我在PHP日期记得的情况来看,你的安全检查已经破了。如果$_SESSION['rights']
没有,你设置一个标题重定向到登录页面包括所需的$accptList
,但是你不退出脚本或将其余内容包装在else
中,所以即使发送了头文件也会执行数据库代码,不是吗?“
您还应在标题后添加exit;
。如果它退出到标题,那么您将知道它是代码的第一部分失败。
exit;
应始终遵循标题,并且被视为良好做法。
我还建议您检查是否确实使用isset()
设置了所有会话名称,并且即使它们在条件语句中使用empty()
为空也是如此。
即:
if( isset($_SESSION['artcode']) && !empty($_SESSION['artcode']) )
将其他会话变量添加到该条件,并检查您的列是否允许NULL,如注释中所述。