0

我正在构建一个视频搜索引擎,并想像 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>';    
}?>

谢谢

4

5 回答 5

2

您不应该使用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
}

您的数据正在从mysql_query内部解析while,您无需使用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>';
于 2013-03-14T14:49:26.223 回答
2
<?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'];
于 2013-03-14T14:44:56.683 回答
1

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>';    
}
?>
于 2013-03-14T14:48:40.117 回答
1

试试这个,你可以遍历结果集并在那里打印出 $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>';    
    }
?>
于 2013-03-14T14:47:29.710 回答
0

如果您为 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>';    
        }
     ?>
于 2013-03-14T15:16:23.517 回答