首页 文章

SQL表单提交中的复选框的简单问题

提问于
浏览
1

所以请原谅这个愚蠢的问题 . 我是音乐老师,不是程序员 .

我正在提交表格 . 我可能已经检查了“口语”的复选框 .

<input type="checkbox" id="speakEnglish" name="speakEnglish" value="yes"  />
<input type="checkbox" id="speakGerman" name="speakGerman" value="yes"  />

然后在表格提交我

$speakEnglish = $_POST['speakEnglish'];
$speakGerman = $_POST['speakGerman'];

并从中制定我的SQL查询 . 它在我的本地主机上提交和插入正常,但自上传到服务器后,当复选框为空时我得到了这个...

AN error occurred in the script '/home/berli/public_html/TEST/signup.php' on line 295: 
Undefined index: speakGerman

这让我感到困惑..虽然我知道发生了什么 .

但是为什么我的表单之前提交了空复选框,现在它会抛出错误?处理这个问题的正常方法是什么?

就像是..?

if(isset($_POST[checkboxVar]) { $SQLcheckboxVar = $_POST[checkboxVar]} };

我只是不明白为什么空的复选框没有把我挂在本地主机上,但现在他们这样做了 . 我无法想到我可以做的任何事情导致这一点,我当然没有测试复选框变量之前...但我有一个充满INSERTed条目的SQL表 .

这在本地与服务器上的比较有什么不同?

3 回答

  • 1

    您的服务器错误报告必须显示通知/警告(不确定具体是哪一个) .

    你说 if(isset($_POST['checkboxVar'])) 就是你无法改变你的php配置(php.ini)所需要隐藏的错误 . 这是您在线服务器上所需要的(通常是 /etc/php.ini ):

    ;Show all errors, except for notices and coding standards warnings
    error_reporting = E_ALL & ~E_NOTICE
    
  • 2

    您的本地配置可能使用默认的PHP设置,这会抑制任何通知 . 生产环境 服务器具有更严格的错误报告,可让您了解微小(最可能不重要)的问题 .

    在这种情况下,您尝试访问未定义的变量,因为浏览器不会为尚未选中的复选框发送任何数据 .

    正如上面已经指出的那样,一个简单的if(isset($ _ POST [checkboxVar]))可以解决每个变量级别的通知 .

    如果你希望留下一位音乐老师而不是每次弹出这些东西时都不要碰到墙,那么简单地将以下内容作为你的程序的第一行可能更容易:

    error_reporting(E_ALL & ~E_NOTICE);
    
  • 2

    避免此通知的最简单方法是检查是否已使用以下内容检查您的复选框:

    if (!isset($_POST['checkboxVar'])) $_POST['checkboxVar'] = 'no';
    

    要么

    $checkboxVar = isset($_POST['checkboxVar']) ? $_POST['checkboxVar'] : 'no';
    

    您遇到的问题是,如果未选中复选框,浏览器将不会在formdata中提交任何内容 .

相关问题