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
}