我在PHP中有一个二维数组,它打印数组的索引而不是值。
这是我设置数组的地方。
for($i = 1;$i <= $numOfCriteria;$i++)
{
for($j = 1;$j <= $numOfScores;$j++)
{
$description[$i][$j] = mysql_real_escape_string($_POST['descriptionPosition'.$i.$j]);
}
}
这是SQL查询。
for($i = 1;$i <= $numOfCriteria;$i++)
{
for($j = 1;$j <= $numOfScores;$j++)
{
$this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES (\"$description[$i][$j]\",\"$criteriaID[$i]\", \"$scoreID[$j]\")");
}
}
这就是数据库中的内容。
Array[1]
Array[2]
Array[1]
Array[2]
感谢您提前回复。
答案 0 :(得分:2)
这是因为PHP的解析器无法正确识别字符串中的多个数组索引。
如果您尝试这样做:
<?php
$foo = array(array(array("bar")));
echo "wrong: \"$foo[0][0][0]\"" . PHP_EOL;
echo "right: \"{$foo[0][0][0]}\"" . PHP_EOL;
你会意识到:
wrong: "Array[0][0]"
right: "bar"
要解决此问题,请按照上面的说明使用"{$var}"
语法。变量表达式周围的花括号可确保解析器正确处理它:
$this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES (\"{$description[$i][$j]}\",\"{$criteriaID[$i]}\", \"{$scoreID[$j]}\")");
答案 1 :(得分:0)
for($i = 1;$i <= $numOfCriteria;$i++)
{
for($j = 1;$j <= $numOfScores;$j++)
{
$this->Instructor->query("INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES ('".$description[$i][$j]."','".$criteriaID[$i]."', '".$scoreID[$j]."')");
}
}
在字符串中使用内联数组不起作用。 它只适用于字符串,数字等。
对于对象和数组,您可以将其拆分。
为了便于阅读,我使用了&#39;而不是\&#34;
此致 STEFAN
答案 2 :(得分:0)
一个。不要对SQL使用双引号"
使用单引号'
B中。它不是一个循环中有效的重复SQL
语句
℃。 \"$criteriaID[$i]\"
是在PHP中访问数组变量的无效方法
d。你只需要1个循环而不是2个
$sql = "INSERT INTO Criteria_Description (description,CriteriaID,ScoreID) VALUES ('%d','%s', '%d')";
for($i = 1; $i <= $numOfCriteria; $i ++) {
for($j = 1; $j <= $numOfScores; $j ++) {
$this->Instructor->query ( sprintf ( $sql, mysql_real_escape_string ( $_POST ['descriptionPosition' . $i . $j] ), $criteriaID [$i], $scoreID [$j] ) );
}
}