什么';我的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 " ------ ";
print "$Valor[$val]";
echo " ------ ";
print "$Producto[$val]";
echo " ------ ";
print "$FormaPago[$val]";
echo " ------ ";
print "$FechaConsignacion[$val]";
echo " ------ ";
print "$Detalle[$val]";
echo " ------ ";
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 " ------ ";
print "$Valor[$val]";
echo " ------ ";
print "$Producto[$val]";
echo " ------ ";
print "$FormaPago[$val]";
echo " ------ ";
print "$FechaConsignacion[$val]";
echo " ------ ";
print "$Detalle[$val]";
echo " ------ ";
print "$FechaRegistrar[$val]";
echo "<br><hr>";
}
unset($val);