保存发生错误的数据,但仍然存储数据。您如何摆脱这些错误?
$query1 = "SELECT * FROM t_ref_pokja WHERE status='1' ORDER BY id";
$hasil1 = mysqli_query($koneksi,$query1);
if ($num_rows1 = mysqli_num_rows($hasil1)) {
while($list1 = mysqli_fetch_array($hasil1)){
$no = $list1['id'];
$a= "wisuda_$no";
$b= "RT_$no";
$c= "OPR_$no";
$d= "PI_$no";
$e= "Strat_$no";
$f= "pagu_$no";
$g= "save_$no";
$nama=$_POST[$f];
$wisuda1 = $_POST[$a];
$wisuda = str_replace(",", "",$wisuda1);
$rt1 = $_POST[$b];
$rt = str_replace(",", "",$rt1);
$opr1 = $_POST[$c];
$opr = str_replace(",", "",$opr1);
$pi1 = $_POST[$d];
$pi = str_replace(",", "",$pi1);
$strat1 = $_POST[$e];
$strat = str_replace(",", "",$strat1);
$save = $_POST[$g]; //line 66
$total =($wisuda+$rt+$opr+$pi+$strat); //line 67
$tahun = date("Y");
if($save == "save"){
请帮助我
首先,这些是注意和警告,而不是错误。如您所见,在这些情况下,代码执行将继续,而在发生错误的情况下,脚本执行将终止。
这里至少有两个不同的问题:
对于1,您应在访问$_POST
数组之前检查该密钥是否存在。我假设因为请求中不存在,所以“保存”参数是可选的。由于不存在,因此将null
分配给$save
,因此,这可能是以后逻辑所需的值。您可以简单地使用array_key_exists
或array_key_exists
添加条件以防止发出通知。如果您使用的是php 7或更高版本,则可以使用isset
。
isset
OR
"null coalesce" operator(??
)
对于2,我需要有关其价值和意图的更多信息。从加法运算符和逗号替换来看,您似乎正在接受以某种方式设置格式的数值。在这种情况下,PHP会将数字字符串隐式转换为数字。您可能需要删除其他格式。取决于输入数据,??
或$save = array_key_exists($g, $_POST)?$_POST[$g]:null;
可能适用。最终,您需要从字符串中提取所需的数字并将其转换为数字值,然后再执行加法运算(除非您尝试进行字符串连接,在这种情况下,请参见$save = $_POST[$g]??null;
运算符)