Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
什么';我的foreach php/MySQL代码有什么问题?_Php_Foreach - Fatal编程技术网

什么';我的foreach php/MySQL代码有什么问题?

什么';我的foreach php/MySQL代码有什么问题?,php,foreach,Php,Foreach,我尝试使用复选框从一个表单中插入多行,包括从输入框中获取值,它们都具有以下结构: <input id="Valor" type="text" name="Valor[]" value="<?php echo $row2["Valor"]; ?>" /> 第一件事: 不是键,而是$key foreach($_POST['Pago'] as $key => $val) { 但是我没有看到任何SQL代码 附录 嗯。。。将内容插入数据库似乎是一种非常混乱的方式。正如C

我尝试使用复选框从一个表单中插入多行,包括从输入框中获取值,它们都具有以下结构:

<input id="Valor" type="text" name="Valor[]" value="<?php echo $row2["Valor"];  ?>" />
第一件事:
不是
,而是
$key

foreach($_POST['Pago'] as $key => $val) {
但是我没有看到任何SQL代码

附录

嗯。。。将内容插入数据库似乎是一种非常混乱的方式。正如Cyclone所注意到的,在插入日期之前,您没有净化您的输入。这是错误的,但这是另一篇文章的故事:p

除了考虑一件事:

您确定要使用吗

$Producto = $_POST['Producto'][$key];
而不是:

$Producto = $_POST['Producto'][$val];
你似乎在那些复选框中存储了一些id。。。否则,您可能会遇到如下情况:

1  [x]
2  [ ]
3  [ ]
4  [x]

所以我相信
$\u POST['Pago']
将只有2个字段1和4。。。但是它们的键将是1和2,因为非活动复选框将没有值,并且不会在数组中结束。但我可能错了。。。不好意思承认,我不记得它是如何精确工作的。问题解决了,谢谢你的帮助!!!!!,这就是下一个变化:

if(!empty($_POST['Pago'])) {
    $aLista = array_keys($_POST['Pago']);
    $Valor = $_POST['Valor'];
    $Pago = $_POST['Pago'];
    $Producto = $_POST['Producto'];
    $FormaPago = $_POST['FormaPago'];
    $FechaConsignacion = $_POST['FechaConsignacion'];
    $Detalle = $_POST['Detalle'];
    $FechaRegistrar = $_POST['FechaRegistrar'];
foreach($aLista as $key => $val) {
      print "$aLista[$key] => $val";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Valor[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Producto[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FormaPago[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FechaConsignacion[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Detalle[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FechaRegistrar[$val]";
      echo "<br><hr>";
}
unset($val);
if(!empty($\u POST['Pago'])){
$aLista=array_key($_POST['Pago']);
$Valor=$_POST['Valor'];
$Pago=$_POST['Pago'];
$Producto=$_POST['Producto'];
$FormaPago=$_POST['FormaPago'];
$FechaConsignacion=$_POST['FechaConsignacion'];
$Detalle=$_POST['Detalle'];
$fecharegistar=$\u POST['fecharegistar'];
foreach($alistaas$key=>$val){
打印“$aLista[$key]=>$val”;
回声“----”;
打印“$Valor[$val]”;
回声“----”;
打印“$Producto[$val]”;
回声“----”;
打印“$FormaPago[$val]”;
回声“----”;
打印“$FechaConsignacion[$val]”;
回声“----”;
打印“$Detalle[$val]”;
回声“----”;
打印“$FechaRegistrar[$val]”;
回声“

”; } 未结算(val);
}


我想,现在我可以毫无问题地插入这些行了,

哪里有mysql代码。。。?你也有很多xss注入漏洞。你能告诉我们呈现表单的页面代码吗?在执行此代码之前,有点难以理解发生了什么。$AInsertar=“(“$Ider.”、“$Producto.”、“$fecharegistar.”、“$FechaConsignacion.”、“$FormaPago.”、“$Pagado.”、“$Valor.”、“$Detalle.”、“$FechaAprobado.”、“;”;$sql=“插入compras(IdCliente、IdProducto、FechaSolicitud、FechaPago、IdFormaPago、RealizoPago、ValorPagado、Detalles、FechaAprobacionPago)值中”。$AInsertar;echo$sql;conectar();mysql_query($sql)或die(mysql_error());desconectar()<代码>打印($\u POST)
请你说得对,但我不知道为什么我放入$val时它不起作用:(关于注入如何改进或做一些事情?我不知道如何处理我混乱的代码。我将尝试在未检查的值中添加一些值,看看现在会出现什么样的结果。欢迎任何关于我必须做什么的想法。嗨,很抱歉之前没有响应。至于数据验证,这更复杂,但最简单确保您使用mysql\u real\u escape\u string()函数用于表单中的每个字段。这至少会消除SQL注入威胁。请在php.net/manual/en/function.mysql-real-escape-string.phpHi上查看此函数,抱歉之前没有响应。对于更复杂但最简单的数据验证,请确保使用mysql\u real\u escape\u str为表单中的每个字段使用ing()函数。这至少会消除SQL注入威胁。请在“确定”上查看此函数,谢谢。我将阅读它并立即付诸实践:D
1  [x]
2  [ ]
3  [ ]
4  [x]
if(!empty($_POST['Pago'])) {
    $aLista = array_keys($_POST['Pago']);
    $Valor = $_POST['Valor'];
    $Pago = $_POST['Pago'];
    $Producto = $_POST['Producto'];
    $FormaPago = $_POST['FormaPago'];
    $FechaConsignacion = $_POST['FechaConsignacion'];
    $Detalle = $_POST['Detalle'];
    $FechaRegistrar = $_POST['FechaRegistrar'];
foreach($aLista as $key => $val) {
      print "$aLista[$key] => $val";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Valor[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Producto[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FormaPago[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FechaConsignacion[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$Detalle[$val]";
      echo "&nbsp;&nbsp;------&nbsp;&nbsp;";
      print "$FechaRegistrar[$val]";
      echo "<br><hr>";
}
unset($val);