Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
While循环php数组_Php_Mysql_Arrays_While Loop - Fatal编程技术网

While循环php数组

While循环php数组,php,mysql,arrays,while-loop,Php,Mysql,Arrays,While Loop,我用msql查询返回的信息填充了三个php数组。前两个数组完全填满了所需的信息,但最后一个数组没有填满。唯一输入的是“v”。如果我不把它做成一个数组,只做一个值,它就工作得很好,但是当我把它做成一个数组时,它就停止工作了。如果你有任何想法,谢谢 $query = mysql_query("SELECT * FROM chanels WHERE cname = '$cname' "); $numrows = mysql_num_rows($query); while($row = mysql_f

我用msql查询返回的信息填充了三个php数组。前两个数组完全填满了所需的信息,但最后一个数组没有填满。唯一输入的是“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数组不起作用,而其他两个数组完全填满。我已经检查了拼写,输入的所有内容都很完美。

方法中使用fetch\u数组,而不是使用fetch\u数组,这样您就可以在数组中返回带有键的行,这些键被命名为结果中的列-如下所示:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["videolocation"];
    echo $row["title"];
    echo $row["videoimagelocation"];
}
$row[0]='someLoc' // Data from videoLocation
$row[1]='someTitle' // Data from title column
$row[2]='someImageLoc' // Data from videoImageLocation
$row['videolocation']='someLoc' 
$row['title']='someTitle' 
$row['videoimagelocation]='someImageLoc' 
此外,您可能应该远离旧的mysql_*函数,修改新的闪亮函数。这将让您以更安全的方式连接,并提供更大的灵活性

编辑:返回assoc数组时,它仍然是数据库的一行。但是,您当前的代码返回如下内容:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["videolocation"];
    echo $row["title"];
    echo $row["videoimagelocation"];
}
$row[0]='someLoc' // Data from videoLocation
$row[1]='someTitle' // Data from title column
$row[2]='someImageLoc' // Data from videoImageLocation
$row['videolocation']='someLoc' 
$row['title']='someTitle' 
$row['videoimagelocation]='someImageLoc' 
Assoc阵列的工作原理如下:

while ($row = mysql_fetch_assoc($result)) {
    echo $row["videolocation"];
    echo $row["title"];
    echo $row["videoimagelocation"];
}
$row[0]='someLoc' // Data from videoLocation
$row[1]='someTitle' // Data from title column
$row[2]='someImageLoc' // Data from videoImageLocation
$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' ");

如果列的大小写不正确,这将为您返回一个错误。

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

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

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

什么是$counter2?也可以使用单个数组来存储所有三个值。为什么要使用3个数组?在最后一个例子中,使用var_dump向我们显示$row的内容。第二,请不要使用mysql_*函数,因为它很容易被sql注入攻击。使用PDO或MySQLi.check print_r$row;包含此键videoimagelocation?$counter2=0并用作索引值我正在尝试将这些值添加到数组中,我获取数组的原因是查询可能返回多个值row@Fluffeh当您使用mysql\u fetch\u数组时,没有第二个参数,它默认为mysql\u两者,所以返回的数组既包含数字索引又包含字符串索引。谢谢你能投票支持我的问题吗?因为我不想得到一个不好的代表