我将多维后置变量转换为动态变量,如下所示:
foreach($_POST as $k => $v){
${$k} = $v;
}
所以我的新数组看起来像这样:
Array(
[name] => Joe
[surname] => Blogs
[study] => Array
(
[0] => English
[1] => IT
)
[school] => Array
(
[0] => Array
(
[0] => Some School Name
[1] => 03/09/2015
[2] => Present
)
)
)
因此,如果我想获得学校名称,此代码将起作用:
echo $school[0][0];
但是,我正在努力在sql语句中使用这个变量,如下所示:
$sql = "INSERT INTO table (name, surname, subject_1, subject_2, school1_name, school1_datefrom, school1_dateto) VALUES ('$name', '$surname', '$subject[0]', '$subject[1]', '$school[0][0]', '$school[0][1]', '$school[0][2]', '$school[0][3]')";
echo $sql;
所有不是数组或单级数组的变量(如study
)都显示正常,但像$school[0][0]
这样的学校变量显示为'数组[0]', '阵列[1]' .........
为什么它这样做并且在那里我可以正确显示这些变量?
答案 0 :(得分:2)
如果将数组值包装在{}
中,那么它应该可以正常工作。我不记得这背后的原因,但试试吧。
$sql = "INSERT INTO table (name, surname, subject_1, subject_2,
school1_name, school1_datefrom,
school1_dateto)
VALUES ('$name', '$surname', '{$subject[0]}',
'{$subject[1]}', '{$school[0][0]}',
'{$school[0][1]', '{$school[0][2]}',
'{$school[0][3]}')";
我现在记得称为复杂(卷曲)语法
不是因为语法很复杂,而是因为它允许使用复杂的表达式。
答案 1 :(得分:0)
将变量包装在 {} 中,它应该有效。大括号用于明确指定变量名称的结尾。
...快速
$number = 4;
print "You have the {$number}th edition book";
//output: "You have the 4th edition book";
没有花括号PHP试图找到一个名为$ numberth的变量,它不存在!
希望这会有所帮助。
答案 2 :(得分:0)
替换
$sql = "INSERT INTO table (name, surname, subject_1, subject_2, school1_name, school1_datefrom, school1_dateto) VALUES ('$name', '$surname', '$subject[0]', '$subject[1]', '$school[0][0]', '$school[0][1]', '$school[0][2]', '$school[0][3]')";
带
$sql = "INSERT INTO table (name, surname, subject_1, subject_2, school1_name, school1_datefrom, school1_dateto) VALUES ('$name', '$surname', '{$subject[0]}', '{$subject[1]}', '{$school[0][0]}', '{$school[0][1]}', '{$school[0][2]}', '{$school[0][3]}')";