2011-08-03 11 views
0

まあ、私はmysqlビューからいくつかのデータを抜きたいですが、wuery dosは(ビューにデータが入っていても)何も取得していないようです。ここPHPクエリはデータを取得しませんか?

は私が(私はPHPのためのADODBを使用しています)で「遊んで」してきたコード

$get_teachers=$db->Execute("select * from lecturer "); 

//$array=array(); 
//fill array with teacher for each lesson 
for($j=0;$j<$get_teachers->fetchrow();++$j){ 
    /*$row2 = $get_lessons->fetchrow(); 
    $row3=$row2[0]; 
    $teach=array(array()); 
    //array_push($teach, $row3); 
    $teach[$j]=mysql_fetch_array($get_teachers, TYPE); 
    //echo $row3;*/ 
    $row = $get_teachers->fetchrow(); 
    //$name=$row[0]+" "+$row[0]+"/n"; 
    //array_push($teach, $row1); 
    echo $row[0]; echo " ";echo $row[1]." "; 
    //$db->debug = true; 

} 

は、私は、「ユーザーからの姓、名を選択」のような何かをしようとした場合、クエリが部分的に機能しています。部分的には、データベースに2人のユーザーがいる間、ループは最後のユーザーのみを印刷します。

私が実行したい元のクエリは、この

$get_teachers=$db->Execute("select surname,name from users,assigned_to,lessons 
where users.UID=assigned_to.UID and lessons.LID=assigned_to.LID and 
lessons.term='".$_GET['term']."'"); 

だったが、私がGETの一部を置換することによって、ビュー(あなたはphpMyAdminのでこれを実行すると、それが正常に動作します(としようとした何かをするように見えるのdidntので、 UID = useridとLID = lessonidを含むことによって教えるレッスンに各ユーザーを接続するテーブルです)。私がここでやってみたいのは、レッスンを教えるユーザーの名前+名字です。各レッスンとそれを教える人がリストされていることを想像してみてください。bレッスンが利用可能であるという条件に従ってください。私は、ライブラリを使用する方法については、最初のページに例を見ることができるhttp://adodb.sourceforge.net/を見てみると

+0

のようにそれを使用する必要があります - 最初のページの例を! http://adodb.sourceforge。net/ – thetaiko

+0

ありがとう皆さん:)私は確かにadodbのドキュメントをもっと見ていきます。ご協力いただきありがとうございます – George

答えて

3

$rs = $DB->Execute("select * from table where key=123"); 
while ($array = $rs->FetchRow()) { 
    print_r($array); 
} 

だから、あなたが使用する必要があります。

while ($row = $get_teachers->fetchrow()) { 

の代わり:

for ($j = 0; $j < $get_teachers->fetchrow(); ++$j) { 

FetchRow()のアイデアは、シーケンス内の次の行を返します。最後の行の番号が返されないので、ループとしてforの条件として使用しないでください。シーケンスの次の行が必要になるたびに呼び出す必要があります。行がなくなると、falseが返されます。

また、FetchRow()のドキュメントをご覧ください。

0

for($j=0;$j<$get_teachers->fetchrow();++$j){

...数行後に...

$row = $get_teachers->fetchrow(); 

は、あなたが実際に何かを印刷する前に二度fetchrow()を呼び出す方法を参照してください?実際に使用する1つにつき結果セットから2行を削除します。

while ($row = $get_teachers->fetchrow()) { 

代わりにfetchrow()をループ内で再度呼び出さないでください。

0

あなたがループ内で二回最初

for($j=0;$j<$get_teachers->fetchrow();++$j){ 
    ... some code ... 
    // And here you fetch again 
    $row = $get_teachers->fetchrow(); 

を取得しているので、あなたは、ドキュメントを読んで、この

while ($row = $get_teachers->fetchrow()) { 
関連する問題