好吧,我想从mysql视图中提取一些数据,但wuery似乎没有检索到任何内容(即使视图中有数据(。
这是我一直在"玩"的代码(我使用的是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中执行此操作时,它运行良好(通过将GET部分替换为从1到7的数字(
你想知道的表是:users、assigned_to和classics。(assigned_to是一个表,通过包含UID=userid和LID=lessonid,将每个用户连接到他教授的课程(。我想在这里做的是得到上课用户的名字+姓氏。想象一下,一个列表显示了每节课+谁根据该课的可用术语来教授它。
查看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()
的文档。
for($j=0;$j<$get_teachers->fetchrow();++$j){
几行之后。。。
$row = $get_teachers->fetchrow();
看看在实际打印任何内容之前如何调用fetchrow()
两次?实际使用的每1行,就从结果集中删除两行。
while ($row = $get_teachers->fetchrow()) {
而不要在循环中再次调用CCD_ 7。
因为您在循环中首先获取两次
for($j=0;$j<$get_teachers->fetchrow();++$j){
... some code ...
// And here you fetch again
$row = $get_teachers->fetchrow();
你应该像这个一样使用它
while ($row = $get_teachers->fetchrow()) {