>我在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]
提前感谢您的任何回复。
这是因为 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]}")");
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]."')");
}
}
在字符串中使用内联数组不起作用。它仅适用于字符串,数字等。
对于对象和数组,您必须将其拆分。
为了可读性,我使用了'而不是\"
问候斯特凡
A. 不要使用双引号 "
对于 SQL 使用单引号 '
二.循环中的语句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] ) );
}
}