1

配列の一部を読み取る必要があるこの関数を作成しています。各値には、PDO クエリを実行する数値が保持されます。これは私の次のコードです:

function get_topics($array) {

$top = 20; $base = 0;
foreach ($array as $key => $value) {


$getData = $dbc->prepare('SELECT * FROM topics WHERE id = :id LIMIT 1'); 
$getData->execute(array(':id' => $value));

while($row = $getData->fetch()) {



$potential_topic_img = 'members/topic_' . $value . '.jpg'; 
if (file_exists($potential_topic_img)) { $topic_img = $potential_topic_img; } else {      
$topic_img = 'members/0.jpg'; } 




$name = $row['name'];
echo '<div class="topic_div"><img src="' . $topic_img . '" width="80"><br /><span 
style="font-size:10pt;">' . $name . '</span></div>';


} if (++$base == $top) break;

}

}

echo get_topics($some_array);

しかし、私が得るのはこれを伝えるエラーだけです:「解析エラー:構文エラー、予期しない T_VARIABLE in /home/......」、そして問題は次の行にあると言っています:

$getData->execute(array(':id' => $value));

私は何が間違っている可能性がありますか?

編集

いくつかのコードを削除しましたが、これが残っている場合、コードは正常に動作しています:

function get_topics($array) {


foreach ($array as $key => $value) {

echo $value;

  }
}

echo get_topics($user_likes_array);

したがって、 $value が空であるというわけではありません。問題は最初に述べた行にあるようです。その行の下にすべてを移動すると、エラーメッセージは変化しませんが、その特定の行を移動すると変化するためです。

4

2 に答える 2

1

foreach ($array as $key => $value)各反復で現在の要素のキーを$value変数に割り当てます。

試す

$getData->execute(':id',$value);
于 2012-11-24T09:01:34.193 に答える
0

あなたが投稿したコードは正しいです。あなたは正しいファイルにいると確信しています。

私はちょうどあなたのコードに対処し、レイアウトを整理し、それを私のPHPテストバッチで実行しましたが、それは正しいです

テスト バッチからの出力

G:\Others\Programs\phpApplications>SET PHP_PATH=../php/php.exe

G:\Others\Programs\phpApplications>SET FILE_PATH=../phpApplications/test2.php

G:\Others\Programs\phpApplications>SET LOOP=FALSE

G:\Others\Programs\phpApplications>"../php/php.exe" "../phpApplications/test2.ph
p"

G:\Others\Programs\phpApplications>pause
Press any key to continue . . .

私が使用したコード

<?php

function get_topics($array) {
    $top = 20; 
    $base = 0;
    foreach ($array as $key => $value) {
        $getData = $dbc->prepare('SELECT * FROM topics WHERE id = :id LIMIT 1'); 
        $getData->execute(array(':id' => $value));
        while($row = $getData->fetch()) {
            $potential_topic_img = 'members/topic_' . $value . '.jpg'; 
            if (file_exists($potential_topic_img)) { $topic_img = $potential_topic_img; } else {     
            $topic_img = 'members/0.jpg'; } 

            $name = $row['name'];
            echo '<div class="topic_div"><img src="' . $topic_img . '" width="80"><br /><span     
            style="font-size:10pt;">' . $name . '</span></div>';
        }
        if (++$base == $top) break;
    }
} 
$some_array = array();
echo get_topics($some_array);

エラーが発生した場合、一時停止コマンドが CMD に送信される前にエラーが表示されます。

私のテスター がこれで動作することを証明します。コメントアウトし//たところ$some_array = array()です。結果は次のとおりです。

G:\Others\Programs\phpApplications>SET PHP_PATH=../php/php.exe

G:\Others\Programs\phpApplications>SET FILE_PATH=../phpApplications/test2.php

G:\Others\Programs\phpApplications>SET LOOP=FALSE

G:\Others\Programs\phpApplications>"../php/php.exe" "../phpApplications/test2.ph
p"

Warning: Invalid argument supplied for foreach() in G:\Others\Programs\phpApplic
ations\test2.php on line 6

G:\Others\Programs\phpApplications>pause
Press any key to continue . . .
于 2012-11-23T23:28:39.473 に答える