我该怎么做?
根据PHP.net,
$a = "hi";
$hi = 2;
$$a; // returns 2
然而,我需要:
$i = 2;
$_POST['link$i']; // I need this to return the same thing as $_POST['link2']
以下是我的代码。
for ($i = 1; $i <= 40; $i++)
{
if(!empty($link$i))
{
$link$i = mysql_real_escape_string($_POST['link$i']);
mysql_query("
INSERT INTO links (link, rimageid) VALUES
('".$link$i."', '".$id."') ");
} else { }
}
我这样做的原因是,我有很多文本输入字段将它们的值发布到这个文件中,我想通过for循环定义并插入它们的每个值,而不是手动将每个链接插入mysql。
现在,我得到:
Parse error: syntax error, unexpected T_VARIABLE, expecting ')' in C:'xampp'htdocs'new2.php on line 22
我该怎么做?谢谢
对于数组索引连接,可以,但此代码为
for ($i = 1; $i <= 40; $i++)
{
if(!empty($link$i))
{
$link$i = mysql_real_escape_string($_POST['link$i']);
mysql_query("
INSERT INTO links (link, rimageid) VALUES
('".$link$i."', '".$id."') ");
} else { }
}
不会像你预期的那样工作,也就是说,命名一个像结果这样的变量是不必要的,你为什么要这样做?PHP并不关心变量名以及它是否与结果相协调。
只需:
for ($i = 1; $i <= 40; $i++)
{
if(!empty($_POST['link'.$i]))
{
$regular_variable_name = mysql_real_escape_string($_POST['link'.$i]);
mysql_query("INSERT INTO links (link, rimageid) VALUES ('".$regular_variable_name."', '".$id."') ");
} else { }
}
字符串串联怎么样?
$_POST['link'.$i];
由于$link$i
无效,您收到语法错误。
如果您希望最终值为link2
,那么您需要像Nick Shepherd建议的解决方案。
如果您首先为键创建所需的字符串,则可以更容易地了解发生了什么。
$key = 'link' . $i;
之后,你可以随时使用密钥,在条件类似的情况下
if (!empty($_POST[$key])) {
并且再次出现在您的mysql_escape 中
mysql_real_escape_string($_POST[$key]);
$_POST['link' . $i];
这应该能解决你的问题。对于数组的索引,您可以简单地将要解析的索引的字符串连接起来。
是的。。。你可以做以下
$ = 2;
$link = "link" . $i;
if(isset($_POST[$link])){
//do something
}
或
$_POST[$link.$i]
方法也是如此
$type = "Something";
$method = "get" . $type;
$this->$method(); //calls method -> getSomething()