我有三个php数组,我正在用msql查询返回的信息填充它们。 前两个数组完美地填满了信息需求,但最后一个数组没有填满。唯一输入的是"v"。 如果我不将其设置为数组而仅使单个值,它可以完美运行,但是当我将其设置为数组时,它就会停止工作。如果您有任何想法,谢谢。
$query = mysql_query("SELECT * FROM chanels WHERE cname = '$cname' ");
$numrows = mysql_num_rows($query);
while($row = mysql_fetch_array($query))
{
$videolocation[$counter2] = $row['videolocation'];
$title[$counter2] = $row['title'];
$imagelocation[$counter2] = $row['videoimagelocation'];
$counter2++;
}
图像位置数组是不起作用的数组,而其他两个则完美填充。我已经检查了拼写,一切都输入得很完美。
不要使用fetch_array
而是对方法使用 mysql_fetch_assoc,以便将数组中带有键的行带回为结果中的列 - 如下所示:
while ($row = mysql_fetch_assoc($result)) {
echo $row["videolocation"];
echo $row["title"];
echo $row["videoimagelocation"];
}
此外,您可能应该摆脱旧的mysql_*
功能,并修补新的闪亮的PDO功能。这些将使您以更安全的方式进行连接,并提供更大的灵活性。
编辑:当您带回 assoc 数组时,它仍然是数据库的单行。但是,当前代码返回如下内容:
$row[0]='someLoc' // Data from videoLocation
$row[1]='someTitle' // Data from title column
$row[2]='someImageLoc' // Data from videoImageLocation
Assoc Array 将像这样工作:
$row['videolocation']='someLoc'
$row['title']='someTitle'
$row['videoimagelocation]='someImageLoc'
编辑 2:似乎我在数组与 assoc 问题上追逐了一点红鲱鱼。我可以检查的第一件事是拼写,但您已经这样做了,接下来是检查列名的大小写。在Windows上,默认情况下情况并不重要,但在Linux机器上却很重要。
我发现最简单的方法是这样做:
mysql_query("SELECT videolocation, title, videoimagelocation FROM chanels WHERE cname = '$cname' ");
如果列的大小写错误,则应返回错误。
不是答案,而是更好地利用数组的建议。使用单个来存储所有数据:
while($row = mysql_fetch_array($query))
{
$details[$counter2] = array('videoLocation' => $row['videolocation'],
'title' => $row['title'],
'imageLocation' => $row['videoimagelocation']
);
$counter++;
}
这样,第一个索引将存储第一行详细信息,第二个索引将存储第二行详细信息,依此类推。