【问题标题】:Variable always returns the word "Null"变量总是返回单词“Null”
【发布时间】:2013-01-04 02:35:21
【问题描述】:

如果选中“小于 16”复选框,则以下代码执行 query1;如果选中“16 或更多”复选框,则执行 query2。这非常有效。

<?php
//error_reporting (E_ALL ^ E_NOTICE);
$conn = mysql_connect('localhost','student','student') or die(mysql_error());
mysql_select_db('vgs',$conn);

//Get Question 1
if (isset($_GET['q1option'])) 
{
    $q1option = $_GET['q1option'];
} 
else 
{
    $q1option = "Null";
}

echo("".$_GET['q1option']);
echo("".$q1option);

//Process Question 1
if ($q1option == "Less than 16") 
{
    $query1 = "UPDATE free_hours SET times_selected=times_selected+1 WHERE q1option='Less than 16'";
    $result1 = mysql_query($query1,$conn) or die(mysql_error());
}
if ($q1option == "16 or more") 
{
    $query2 = "UPDATE free_hours SET times_selected=times_selected+1 WHERE q1option='16 or more'";
    $result2 = mysql_query($query2,$conn) or die(mysql_error());
}

但是,当我回显 $_GET['q1option'] 时出现以下错误。

“注意:未定义的索引:第 16 行 C:\wamp\www\Student\vgs\process_answers.php 中的 q1option”

第 16 行是这样的:

echo("".$_GET['q1option']);

此外,当我回显 $q1option 时,它总是回显单词“Null”,即使选中了小于 16 并且“times_selected”值正在递增。

这里有什么问题?

感谢您的帮助。

丹尼尔

【问题讨论】:

  • 您能显示调用此表单的 HTML 吗?
  • 你真的不应该像这里那样将 NULL 设为字符串 $q1option = "Null"; 看看 NULL 是什么:php.net/manual/en/language.types.null.php
  • &lt;form id="vgsForm" action="process_answers.php" method="get" &gt; &lt;div id="Q1"&gt; &lt;label&gt;&lt;input type="radio" name="q1option" value="Less than 16" /&gt;Less than 16&lt;/label&gt;&lt;br /&gt; &lt;label&gt;&lt;input type="radio" name="q1option" value="16 or more" /&gt;16 or more&lt;/label&gt;
  • 那段代码是你写的吗?

标签: php null echo


【解决方案1】:

问题是您没有收到名为q1optionGET 参数。使用调试器检查您的客户端代码并确保它正在发送。

您可以通过执行以下操作来查看服务器端接收到的内容:

error_log('$_GET: '.print_r($_GET, true));

(或者,如果您在安全的环境中,也可以将其回显)。

【讨论】:

  • 在 PHP 文件的顶部。
  • 我这样做了,但没有任何改变。如果有帮助,我在上面的评论中发布了相关的表单代码。
  • 我回应了它并且出现了:$_GET: Array ( )
  • 应该回显:$_GET: q1option 吗?
  • 对,Array() 告诉您,没有从您的客户端代码接收到的 GET 参数。因此,专注于您的 HTML。此外,对您认为有帮助的任何答案进行投票也是标准的 StackOverflow 做法。
【解决方案2】:

首先: 换行

echo("".$_GET['q1option']);

进入

    if(isset($_GET['q1option'])){
      echo("".$_GET['q1option']);
    }

为了摆脱通知,然后 如果您的 $_GET 没有任何东西,请确保您使用或提交您的表单,并且您不会不小心尝试放置两个表单并提交另一个;)。整个代码(表单文件 + process_answers.php)在这里会有所帮助,这是肯定的。

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 2022-01-14
    • 2014-03-04
    • 2016-11-02
    • 2014-05-06
    • 2012-06-05
    • 2014-05-30
    • 2014-02-23
    相关资源
    最近更新 更多