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
<?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 に答える
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 に答える
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 に答える
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 に答える
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 に答える