Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 未定义的偏移量1和2错误_Php - Fatal编程技术网

Php 未定义的偏移量1和2错误

Php 未定义的偏移量1和2错误,php,Php,我收到以下错误: Notice: Undefined offset: 1 in ... on line 93 Notice: Undefined offset: 2 in ... on line 94 这些错误意味着什么?如何修复?我看不出问题出在哪里,但我知道在单击“模块提交”按钮后,问题出现了 $moduleactive=1 $sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive

我收到以下错误:

Notice: Undefined offset: 1 in ... on line 93 
Notice: Undefined offset: 2 in ... on line 94 
这些错误意味着什么?如何修复?我看不出问题出在哪里,但我知道在单击“模块提交”按钮后,问题出现了

$moduleactive=1

    $sql = "SELECT ModuleId, ModuleNo, ModuleName FROM Module WHERE ModuleActive = ? ORDER BY ModuleNo"; 


     $sqlstmt=$mysqli->prepare($sql);

     $sqlstmt->bind_param("i", $moduleactive);

     $sqlstmt->execute(); 

     $sqlstmt->bind_result($dbModuleId,$dbModuleNo,$dbModuleName);


    $moduleHTML  = "";  
      $moduleHTML .= '<select name="modules" id="modulesDrop">'.PHP_EOL;
 $moduleHTML .= '<option value="">Please Select</option>'.PHP_EOL;  

     while($sqlstmt->fetch()) { 
         $moduleHTML .= sprintf('<option value="%1$s_%2$s_%3$s">%1$s - %2$s</option>'.PHP_EOL, $dbModuleNo, $dbModuleName, $dbModuleId);
    } 

$moduleHTML .= '</select>'; 

    $pHTML = "";


    ?>


<form action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="post" onsubmit="return validation(event);">
<table>
<tr>
<th>Module: <?php echo $moduleHTML; ?></th>
</tr>
</table>
<p><input id="moduleSubmit" type="submit" value="Submit Module" name="moduleSubmit" /></p>
<div id="moduleAlert"></div>
<div id="targetdiv"></div>
</form>

<?php

if (isset($_POST['moduleSubmit'])) {    

$outputmodule = ""; 

$moduleInfo = explode("_", $_POST['modules']);
$moduleNo = $moduleInfo[0];
$moduleName = $moduleInfo[1]; //Error line 93
$moduleId = $moduleInfo[2]; //Error line 94
$outputmodule = sprintf("<p><strong>Selected Module:</strong> %s - %s <input type='hidden' value='%s'></p>", $moduleNo, $moduleName, $moduleId);

}

?>
$sql=“从模块中选择ModuleId、ModuleNo、ModuleName,其中ModuleActive=?按ModuleNo排序”;
$sqlstmt=$mysqli->prepare($sql);
$sqlstmt->bind_参数(“i”,$moduleactive);
$sqlstmt->execute();
$sqlstmt->bind_result($dbModuleId、$dbModuleNo、$dbModuleName);
$moduleHTML=“”;
$moduleHTML.=''.PHP\u EOL;
$moduleHTML.='请选择'.PHP\u EOL;
而($sqlstmt->fetch()){
$moduleHTML.=sprintf(“%1$s-%2$s”.PHP_EOL,$dbModuleNo,$dbModuleName,$dbModuleId);
} 
$moduleHTML.='';
$pHTML=“”;
?>

发生此错误的原因是$moduleInfo varibale中该索引处没有值。 因为不在$u POST中['modules']变量

替换此选项以避免错误

$moduleName =$moduleInfo[1]; //Error line 93
$moduleId =$moduleInfo[2]; //Error line 94


该错误表示未定义
1
2
引用的元素

您正在分解用户在模块中发布的带有下划线的字符串。如果该字符串没有任何(或足够多)下划线,
explode
返回一个元素比您想象的少的数组

在使用输入之前,应验证输入,并检查是否至少有3个元素:

$moduleInfo = explode("_", $_POST['modules']);
if (count($moduleInfo) >= 3) {
   $moduleNo = $moduleInfo[0];
   $moduleName = $moduleInfo[1]; //Error line 93
   $moduleId = $moduleInfo[2]; //Error line 94

   // validate the subparts (this is important as well!)
} else {
   // set your variables to some sane default or fail gracefully
}

$\u POST['modules']
没有足够的
\u
分隔值。在你问这个问题之前。为什么您没有在或更好的检查中找到答案?首先,这可能匹配:
$moduleInfo = explode("_", $_POST['modules']);
if (count($moduleInfo) >= 3) {
   $moduleNo = $moduleInfo[0];
   $moduleName = $moduleInfo[1]; //Error line 93
   $moduleId = $moduleInfo[2]; //Error line 94

   // validate the subparts (this is important as well!)
} else {
   // set your variables to some sane default or fail gracefully
}