我正在构建一个视频搜索引擎,并希望为每个人创建一个就像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>';
}
?>