我有一个包含26个项目和3个子项目的表单,需要插入到数据库中,我想知道是否有一种方法可以循环查询以避免像这样的一长串查询。
$key=$_GET['key'];
$suc=$_GET['sucursal'];
$columnas="client_key,sucursal,extra,op1,op2,op3";
# Inicia inserción de valores de Opciones ...
#1
if(empty($_GET['x1'])){ /* nada que ver */ }else{
if(empty($_GET['op11'])){ $op1='NULL'; }else{ $op1='1'; }
if(empty($_GET['op21'])){ $op2='NULL'; }else{ $op2='1'; }
if(empty($_GET['op31'])){ $op3='NULL'; }else{ $op3='1'; }
if(empty($edit)){
$extas=mysqli_query($cnx,"INSERT INTO xtr_opt ($columnas)VALUES('$key','$suc','".$_GET['x1']."','$op1','$op2','$op3')")or die($cnx);
}else{
$extas=mysqli_query($cnx,"UPDATE xtr_opt SET client_key='$key',sucursal='$suc','extra=".$_GET['x1']."',op1='$op1',op2='$op2',op3='$op3')")or die($cnx);}}
#2
if(empty($_GET['x2'])){ /* nada que ver */ }else{
if(empty($_GET['op12'])){ $op1='NULL'; }else{ $op1='1'; }
if(empty($_GET['op22'])){ $op2='NULL'; }else{ $op2='1'; }
if(empty($_GET['op32'])){ $op3='NULL'; }else{ $op3='1'; }
if(empty($edit)){
$extas=mysqli_query($cnx,"INSERT INTO xtr_opt ($columnas)VALUES('$key','$suc','".$_GET['x2']."','$op1','$op2','$op3')")or die($cnx);
}else{
$extas=mysqli_query($cnx,"UPDATE xtr_opt SET client_key='$key',sucursal='$suc','extra=".$_GET['x2']."',op1='$op1',op2='$op2',op3='$op3')")or die($cnx);}}
#3
if(empty($_GET['x3'])){ /* nada que ver */ }else{
if(empty($_GET['op13'])){ $op1='NULL'; }else{ $op1='1'; }
if(empty($_GET['op23'])){ $op2='NULL'; }else{ $op2='1'; }
if(empty($_GET['op33'])){ $op3='NULL'; }else{ $op3='1'; }
if(empty($edit)){
$extas=mysqli_query($cnx,"INSERT INTO xtr_opt ($columnas)VALUES('$key','$suc','".$_GET['x3']."','$op1','$op2','$op3')")or die($cnx);
}else{
$extas=mysqli_query($cnx,"UPDATE xtr_opt SET client_key='$key',sucursal='$suc','extra=".$_GET['x3']."',op1='$op1',op2='$op2',op3='$op3')")or die($cnx);}}
#4
if(empty($_GET['x4'])){ /* nada que ver */ }else{
if(empty($_GET['op14'])){ $op1='NULL'; }else{ $op1='1'; }
if(empty($_GET['op24'])){ $op2='NULL'; }else{ $op2='1'; }
if(empty($_GET['op34'])){ $op3='NULL'; }else{ $op3='1'; }
if(empty($edit)){
$extas=mysqli_query($cnx,"INSERT INTO xtr_opt ($columnas)VALUES('$key','$suc','".$_GET['x4']."','$op1','$op2','$op3')")or die($cnx);
}else{
$extas=mysqli_query($cnx,"UPDATE xtr_opt SET client_key='$key',sucursal='$suc','extra=".$_GET['x4']."',op1='$op1',op2='$op2',op3='$op3')")or die($cnx);}}
2条答案
按热度按时间ruoxqz4g1#
使用
for
循环并将索引连接到输入名称中。我还演示了如何使用准备好的语句来防止sql注入。
请注意,您的代码将文本字符串
'NULL'
到表中,而不是sqlNULL
价值观。如果你想要一个真正的空值,去掉引号NULL
.你的
UPDATE
语句也缺少一个WHERE
子句,所以它们中的每一个都将更新表中的每一行。你可能需要解决这个问题。事实上,我想你可以把INSERT
以及UPDATE
将语句转换为单个INSERT
使用ON DUPLICATE KEY UPDATE
选项。7lrncoxx2#
我同意@barmar关于空值和错误update语句的回答。在这里我还建议另一种方法来实现相同的功能,