Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
PHP数组变量传递不正确_Php_Mysql - Fatal编程技术网

PHP数组变量传递不正确

PHP数组变量传递不正确,php,mysql,Php,Mysql,我有一个疑问,它正在做一些奇怪的事情。此复选框位于while循环中,它正确列出了需要执行的所有操作: <input type='checkbox' name='rep[]' value='$invoiceID'>Reference Number: $invoiceID <input type='hidden' name='billablehours[]' value='$billableTotal'> 它插入了所有它应该做的事情,除了计费小时数。我已经在表单页面的每个复

我有一个疑问,它正在做一些奇怪的事情。此复选框位于while循环中,它正确列出了需要执行的所有操作:

<input type='checkbox' name='rep[]' value='$invoiceID'>Reference Number: $invoiceID
<input type='hidden' name='billablehours[]' value='$billableTotal'>
它插入了所有它应该做的事情,除了计费小时数。我已经在表单页面的每个复选框上输出了$billableTotal的值,该值是正确的。例如,它可能等于25,但按下按钮时输入37.5,这是复选框的另一个值


奇怪。有人能识别问题吗?

您的脚本非常容易受到SQL注入攻击。您需要使用(最好)或运行
$\u POST

请在下面留下我的错误答案,但不要删除此答案,因为我认为需要解决SQL注入漏洞


也就是说,你的问题在于你没有回应价值观:


value=''>

问题在于,若未选中复选框,则不会将其传递给服务器,所以若您有3个复选框,并选择第一个和第三个,则在服务器上,您会得到带有0,1索引的复选框

在您的情况下,只需使用特定的标识符:

<input type='checkbox' name='rep[$id]' value='$invoiceID'>Reference Number: $invoiceID
<input type='hidden' name='billablehours[$id]' value='$billableTotal'>
参考号:$invoiceID
假设您知道此
$id
已连接到相应的
$invoiceID
$billableTotal
, 它可能是数据库中的条目id

当使用:
$\u POST['billablehours'][$index]
时,如果未选中复选框,它将变为空

注意:我的示例只是为了理解这一点,可能不是100%的工作示例,因为我没有完整的代码


请记住:在使用复选框时,正确引用从服务器传递到客户端的数据是关键,而不是只提交选中的复选框。因此,如果只选中一个,则
rep
数组将只有一个元素0,但
billablehours
数组将具有页面上定义的数量

$i = 0;
//loop
    echo "<input type='checkbox' name='rep[$i]' value='$invoiceID'>Reference Number: $invoiceID";
    echo "<input type='hidden' name='billablehours[$i]' value='$billableTotal'>";
    $i++;
//end loop
$i=0;
//环路
echo“参考号:$invoiceID”;
回声“;
$i++;
//端环
因此无论选中了多少复选框,
rep
billablehours
索引都将匹配。

进行以下更改:

name="billablehours[$invoiceID]"

$_POST['billablehours'][$_POST['rep'][$index]]

我敢打赌,他是在用双引号重复整件事,所以变量打印正确,这不是问题所在。我可能错了。我不认为问题来自echo,我实际上认为他向我们展示的所有东西都已经在echo中了“…”所以变量是processedIt已经在echo中了。我把$totalBillable放在每个复选框的旁边,它显示了正确的数字,但插入时会显示不同的数字…谢谢Rob。这肯定会得到解决!仅提交选中的复选框。因此,如果只选中一个,则
rep
数组将只有一个元素
0
,但
billablehours
数组将具有页面上定义的数量。
name="billablehours[$invoiceID]"

$_POST['billablehours'][$_POST['rep'][$index]]