<?php
$_POST['aantal'] = 4;
$_POST['begin'] = 10;
$iets = $_POST['aantal'] + $_POST['begin'];
$ietsanders = $iets - 1;
$values = "'$_POST[a" . $_POST['begin'] . "]', " ;
for ($i = $_POST['begin'] + 1 ; $i < $ietsanders ; $i++){
$values = $values . "'$_POST[a" .$i. "]', ";
}
$values = $values."'$_POST[a" . $ietsanders . "]', ";
echo "using ".$values;
?>
这是我的代码;怎么了?它给我一个错误:
$values = $values . "'$_POST[a" .$i. "]', ";
和
$values = $values."'$_POST[a" . $ietsanders . "]', ";
当我在'
处离开'$_POST
时,它没有给我任何错误。我希望我的for循环每次运行都给我'$_POST[a$i]'
:
'$_POST[a10]', '$_POST[a11]', '$_POST[a12]', '$_POST[a13]',
答案 0 :(得分:1)
将字符串'a'
和$_POST['begin']
连接为外部$_POST
的索引,如:
$_POST['a' . $_POST['begin']]
你的循环看起来像:
// Concatenate a single quote with the $_POST dynamic key, then another single quote and comma.
$values = "'" . $_POST['a' . $_POST['begin']] ."', " ;
// In the loop, same thing concatenating single quotes around the $_POST key
// dynamically built with $i
for ($i = $_POST['begin'] + 1 ; $i < $ietsanders ; $i++){
$values = $values . "'" . $_POST['a' .$i] . "', ";
}
通过将$_POST['stuff']
作为字符串进行构建来尝试执行此操作的方式需要调用eval()
,这在大多数情况下都不会被执行接受$_POST
等用户输入时。
如果您打算将这些值从$_POST
传递给SQL查询,则需要对它们执行一些SQL注入保护。如果可能,建议切换到支持预备语句的API。
最后,不确定为什么你写到$_POST
超全球。希望你有充分的理由这样做:
$_POST['aantal'] = 4;
$_POST['begin'] = 10;
嗯,事实证明,构建文字字符串'$_POST[a10]', '$_POST[a11]', '$_POST[a12]', '$_POST[a13]',
而不是从中插入值。为此,字符串应该是单引号,以防止$
分隔变量。
// Single quote the string, and escape single quotes inside it
$values = '\'$_POST[a' . $_POST['begin'] . ']\', ';
// In the loop, same thing concatenating single quotes around the $_POST key
// dynamically built with $i
for ($i = $_POST['begin'] + 1 ; $i < $ietsanders ; $i++){
$values = $values . '\'$_POST[a' . $i .']\', ';
}
// After the loop, you have an extra comma and space at the end. trim() it off
$values = trim($values, ', ');
答案 1 :(得分:0)
我认为你正在尝试这样做:
$values = $values . "\'$_POST[a" .$i. "]\', ";