-1

msqlクエリから返された情報で埋めている3つのphp配列があります。最初の2つのアレイは必要な情報で完全にいっぱいになりますが、最後のアレイはいっぱいになりません。入力されるのは「v」だけです。配列と単一の値を作成しない場合は完全に機能しますが、配列を作成すると機能しなくなります。何かアイデアがあればありがとう。

$query = mysql_query("SELECT * FROM chanels WHERE cname = '$cname' ");
$numrows = mysql_num_rows($query);

while($row = mysql_fetch_array($query))
{
    $videolocation[$counter2] = $row['videolocation'];
    $title[$counter2] = $row['title'];
    $imagelocation[$counter2] =  $row['videoimagelocation'];
    $counter2++;

}

ImageLocation配列は、他の2つが完全にいっぱいになるまで機能しない配列です。スペルをチェックしましたが、すべてが完全に入力されています。

4

2 に答える 2

3

メソッドにmysql_fetch_assocfetch_arrayを使用する代わりに、次のように、結果の列として名前が付けられた配列内のキーを持つ行を戻すようにします。

while ($row = mysql_fetch_assoc($result)) {
    echo $row["videolocation"];
    echo $row["title"];
    echo $row["videoimagelocation"];
}

また、おそらく古い関数から離れてmysql_*、新しい光沢のあるPDO関数をいじる必要があります。これらにより、より安全な方法で接続できるようになり、柔軟性が大幅に向上します。

編集:連想配列を元に戻すと、それはデータベースの単一の行のままです。ただし、現在のコードは次のようなものを返します。

$row[0]='someLoc' // Data from videoLocation
$row[1]='someTitle' // Data from title column
$row[2]='someImageLoc' // Data from videoImageLocation

また、連想配列は次のように機能します。

$row['videolocation']='someLoc' 
$row['title']='someTitle' 
$row['videoimagelocation]='someImageLoc' 

編集 2: アレイ対アソシエーションの問題で、ちょっとしたニシンを追い詰めたようです。最初にチェックできるのはスペルですが、それは完了しています。次は、列名の大文字と小文字をチェックすることです。Windows では、大文字と小文字はデフォルトで重要ではありませんが、Linux マシンで.

私はこれを行うのが最も簡単な方法だと思います:

mysql_query("SELECT videolocation, title, videoimagelocation FROM chanels WHERE cname = '$cname' ");

列の大文字と小文字が間違っている場合は、エラーが返されます。

于 2012-08-16T05:55:53.293 に答える
0

答えではありませんが、配列をより有効に活用するための提案です。単一のものを使用してすべてのデータを保存します。

while($row = mysql_fetch_array($query))
{
    $details[$counter2] = array('videoLocation' => $row['videolocation'],
                                'title' =>   $row['title'],
                                'imageLocation' => $row['videoimagelocation']
                                );
    $counter++;
}

そうすれば、最初のインデックスは 1 行目の詳細を格納し、2 番目のインデックスは 2 行目の詳細を格納するというようになります。

于 2012-08-16T06:04:29.683 に答える