php查询不检索任何数据?

时间:2011-08-03 14:25:14

标签: php mysql adodb

好吧,我想从mysql视图中提取一些数据,但是wuery dos似乎没有检索任何东西(即使视图中有数据)。

这是我一直在“玩”的代码(我正在使用adodb for php)

$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']."'");

但是因为它似乎没有做任何我尝试过的视图(当你在phpmyadmin中执行它时它工作正常(通过用1到7的数字替换GET部分)

表格,如果你想知道是:用户,assigned_to和课程。 (assigned_to是一个表,通过包含UID = userid和LID = lessonid将每个用户连接到他教授的课程)。我想在这里做的是得到教授课程的用户的姓名+姓氏。想象一个列表,显示每节课+根据课程可用的术语教授它。

3 个答案:

答案 0 :(得分:3)

查看http://adodb.sourceforge.net/我可以在第一页上看到有关如何使用该库的示例:

$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()的文档。

答案 1 :(得分:0)

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

......几行后......

$row = $get_teachers->fetchrow();

在实际打印任何内容之前,请看两次如何调用fetchrow()?您实际使用的每1个从结果集中删除两行。

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

而不是在循环内再次调用fetchrow()

答案 2 :(得分: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()) {