更新一个MySQL列通过PHP为NULL不工作

更新一个MySQL列通过PHP为NULL不工作

问题描述:

当我点击这个按钮我的网页被转发到removeRowValue.php页:更新一个MySQL列通过PHP为NULL不工作

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

?> 
  • 在我的mysql表中检查空列是否为
  • 默认值为NULL。

我已将NULL更新为某个值(即:2014-12-2),但现在我想将其返回NULL,当我单击上述按钮但这不起作用。我没有得到任何错误。

+1

你的专栏允许为空吗? :D – 2014-12-02 15:06:51

+0

你能回应查询吗? – Strawberry 2014-12-02 15:07:35

+2

在问题的范围之外,但从我记得PHP日子里记得,您的安全检查已被破坏。如果$ _SESSION ['rights']'不包含所需的'$ accptList',你可以设置一个头部重定向到登录页面,但是你不会退出脚本或者将剩下的部分包含在'else'中,所以数据库代码即使发送标题也会执行,不是吗? – 2014-12-02 15:14:31

你有

$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 

旁注:错误报告只应在分期完成,并且从不生产。


在评论引述丹·法瑞尔:

“在对问题的范围,但是从我可以从我的PHP天记住,你的安全检查被打破你设置一个头重定向到如果$_SESSION['rights']登录页面不包括所需$accptList,但你不退出脚本或在else包裹休息,所以数据库的代码执行即使头部被发送,不是吗?”

  • 你也应该你的头后面加一个exit;。如果它退出到头部,那么你会知道这是你的代码失败的第一部分。

  • exit;应始终遵循头,并且被认为是很好的做法这样做。


我也建议你检查是否所有的会话名称的使用isset()确实设置,甚至如果他们在条件语句中使用empty()是空的。

即:

if(isset($_SESSION['artcode']) && !empty($_SESSION['artcode'])) 

另外加入其他会话变量该条件,并检查,看看你的列允许NULL,在注释中提到。

+0

非常感谢您的帮助。我很高兴它现在有效,有时它不是代码,而只是一个愚蠢的错误。 Tha camelcase写作已经成功了! – Peter 2014-12-03 06:40:16

+0

@DanFarrel&Fred在你们给我带来新东西之前,我并不知道这一点!谢谢你。可悲的是我不能给你一个+1,因为我的声望还没有快速增长,但工作很好! – Peter 2014-12-03 06:42:02

+0

@彼得你非常欢迎彼得。很高兴能够帮助和分享财富;)*欢呼* – 2014-12-03 12:34:28