-1

我有三个 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++;

}

ImageLocation 数组是不起作用的,而另外两个则完全填满。我检查了拼写,一切都输入得很完美。

4

2 回答 2

3

而不是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:似乎我在数组 vs assoc 问题上追赶了一些红鲱鱼。我可以检查的第一件事是拼写,但你已经做到了,接下来是检查列名的大小写。在 Windows 上,大小写默认不重要,但在 Linux 机器上.

我发现最简单的方法是这样做:

mysql_query("SELECT videolocation, title, videoimagelocation FROM chanels WHERE cname = '$cname' ");

如果一列是错误的情况,这应该会为您返回一个错误。

于 2012-08-16T05:55:53.293 回答
0

不是答案,而是更好地利用数组的建议。使用一个来存储所有数据:

while($row = mysql_fetch_array($query))
{
    $details[$counter2] = array('videoLocation' => $row['videolocation'],
                                'title' =>   $row['title'],
                                'imageLocation' => $row['videoimagelocation']
                                );
    $counter++;
}

这样,第一个索引将存储第一行详细信息,第二个索引将存储第二行详细信息,依此类推。

于 2012-08-16T06:04:29.683 回答