PHP查找每个无效参数


php foreach invalid argument

我正在构建一个视频搜索引擎,并希望为每个人创建一个就像youtube一样。问题是我有麻烦与php foreach()。我得到无效提供的参数错误。下面是代码:

<?php
$sql=mysql_query("SELECT*FROM videos WHERE Name='$nemo'");
while($row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$name=$row['Name'];
}
foreach($name as $key=>values) {
echo '<div id="block'><h1>'.$name.'</h1></div>';    
}?>

谢谢

<?php
  $sql=mysql_query("SELECT*FROM videos WHERE Name='$nemo'");
  while($row=mysql_fetch_array($sql,MYSQL_ASSOC)){
    echo '<div id="block"><h1>'.$row['Name'].'</h1></div>';   
   }
?>

$name不是数组。这里也不要用foreach。While循环在这里工作。所以像这样做。如果需要foreach,则使用$name作为数组。

$name[] = $row['Name'];

您不应该使用mysql扩展名,因为它已被弃用,请使用PDO代替。

不管怎样,我就是这么做的:

$sql = mysql_query("SELECT * FROM videos WHERE Name='$nemo'"); //be careful you might need to secure the $nemo var.
while($row = mysql_fetch_assoc($sql)) //fetch_assoc to have an associated array
{
    $name = $row['Name'];
    echo '<div id="block"><h1>'.$name.'</h1></div>'; //here you placed a ' instead of a "
    //Do the rest of your stuff here
}

您的数据正在从while中的mysql_query进行解析,您不需要使用foreach或其他任何东西再次解析它们。

另一个写所有名字的例子:

$sql = mysql_query("SELECT * FROM videos WHERE Name='$nemo'");
echo '<div id="block"><h1>';
while($row = mysql_fetch_assoc($sql)) 
    echo $row['Name'] . ',';
echo '</h1></div>';

试试这个,你可以循环遍历结果集并在那里打印出$row['Name']。

<?php
    $sql=mysql_query("SELECT*FROM videos WHERE Name='$nemo'");
    while($row=mysql_fetch_array($sql,MYSQL_ASSOC)){
      echo '<div id="block"><h1>'.$row['Name'].'</h1></div>';    
    }
?>

foreach用于数组,但$name是字符串,因为您将单元格值分配给它。要使它成为一个数组并向其中添加项目,它应该像$name[]=$row['Name'];现在你的代码应该变成:

<?php
$sql=mysql_query("SELECT*FROM videos WHERE Name='$nemo'");
while($row=mysql_fetch_array($sql,MYSQL_ASSOC)){
$name[]=$row['Name'];
}
foreach($name as $key=>values) {
    echo '<div id="block"><h1>'.$name.'</h1></div>';    
}
?>

如果您为foeach()提供数组....以外的任何参数,则会得到此错误阅读你的问题后,我想到的第一件事是参数不是一个有效的数组…正确的代码应该是

     <?php
        $name = array(); // declare $name as array 
        $sql=mysql_query("SELECT*FROM videos WHERE Name='$nemo'");
        while($row=mysql_fetch_array($sql,MYSQL_ASSOC))
        {
         $name[]=$row['Name'];
        // now even $name = $row['Name'] means $name[0] = 'value of $row['Name']'
        }
       // Now it will definately work
        foreach($name as $key=>values) 
        {
            echo '<div id="block'><h1>'.$name.'</h1></div>';    
        }
     ?>