出错的部分是:
 
    while (odbc_fetch_row($result))
        {
        $myarray = array (odbc_result($result,1),odbc_result($result,2),odbc_result($result,3),odbc_result($result,4))
        while(list($menu_id,$menu,$menu_grade,$menu_superior)=$myarray)
      {
      $menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;
      $i++;
      }
      my_menu($menu_content,$i,1,$menu_superior_temp);// 执行此函数
        }好像主要是list()函数有问题,说是类型不匹配,可不可以帮忙看看是什么问题。

解决方案 »

  1.   

    首先你的$myarray那行掉了分号了..
      

  2.   

    while(list($menu_id,$menu,$menu_grade,$menu_superior)=$myarray)
         这里为什么要用循环呢?很不解循环恐怕得死机,这个循环退不出来丫?
      

  3.   

    $myarray = array (odbc_result($result,1),odbc_result($result,2),odbc_result($result,3),odbc_result($result,4))至于取出一行后,也不必总是用1,2,3,4作为索引你也可以用
    odbc_result($result,"字段名")
    这样程序更容易理解一些
      

  4.   

    oh,试我刚才copy错了,分号我加上去了。那个list()函数返回是空值吧,那我
    list()=后面用什么类型呢?
    我是想把数据源test中的tt表中内容取出来,怎么办呢?
    那我用while(list($menu_id,$menu,$menu_grade,$menu_superior)=odbc_fetch_row($result)行么?因为这样用总是报告说类型不匹配,所以我就试着用了一个数组变量
      

  5.   

    while (list($menu_id,$menu,$menu_grade,$menu_superior)=odbc_fetch_row($result))
            {
          
          $menu_content[$i]=$menu_id."/".$menu."/".$menu_grade."/".$menu_superior;
          $i++;
         
          my_menu($menu_content,$i,1,$menu_superior_temp);// 执行此函数
     }
    这样不行吗?
      

  6.   

    我测试了一下,我的方法是可行的..你要不,你的这个记录集莫非很特殊的说,呵呵。
    ---
    通过odbc调用mysql,只能使用一些普通的sql语句,像什么limit是不可以得了。
      

  7.   

    先简化为
    while (odbc_fetch_row($result)) {
      $menu_content[$i]=odbc_result($result,1)."/".odbc_result($result,2)."/".odbc_result($result,3)."/".odbc_result($result,4);
      $i++;
      my_menu($menu_content,$i,1,$menu_superior_temp);// 执行此函数
    }
      

  8.   

    to goodname
    我试了一下,报告说我没有配置好数据源
    Warning: SQL error: [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序, SQL state IM002 in SQLConnect in c:\inetpub\wwwroot\mymenutest1.php on line 56
    联结数据库出错! 
    第56行是
    if ($con_id = odbc_connect("test","root","root",SQL_CUR_USE_ODBC))
    可是我在ODBC数据源中明明就是设置了一个windows DSN name 为test,MYSQL database name 也为test的数据源,怎么还是出错呢?
    以上是在IE中测试的,我有一个php工具php expert editor 2.5,它有一个测试的功能,在这里面试的时候是空白一片,没有任何显示
      

  9.   

    to xuzuning,
          多谢多谢,等我把连接数据源的问题解决后试一下你那个方法,多谢了!
      

  10.   

    建立数据源的时候,尝试用 系统dsn,不要用 用户dsn
    测试一下。
      

  11.   

    好像不行,如果我不填写MYSQL database name 就报告说找不到数据源
    这是在php expert editor中的测试结果:Warning: SQL error: [TCX][MyODBC]No Database Selected, SQL state S1000 in SQLExecDirect in C:\Inetpub\wwwroot\mymenutest2.php on line 63Warning: Supplied argument is not a valid ODBC result resource in C:\Inetpub\wwwroot\mymenutest2.php on line 77
    这是在IE中的结果:
    Warning: SQL error: [Microsoft][ODBC 驱动程序 管理器] 未发现数据源名称并且未指定默认驱动程序, SQL state IM002 in SQLConnect in c:\inetpub\wwwroot\mymenutest2.php on line 56
    联结数据库出错!
      

  12.   

    当然要填写MYSQL database name 这个了我是说,odbc打开后的那几个标签中,前面3个,如 用户dsn,系统dsn,文件dsn
    选用系统dsn,这个对机器上的进程都可见。我用的是3.51的odbc驱动,然后你数据源设置好了后,可以下面有个按钮测试一下
    连接成功,会提示success的,只要那里测试成功了,就可以用了。
      

  13.   

    刚才你说的“然后你数据源设置好了后,可以下面有个按钮测试一下
    连接成功,会提示success的,”我试了一下,不过没有找到那个按钮测试,也没有什么提示success,还有就是我把同一个文件村为两个不同的文件名后,执行时结果不一样,一个是刚才说的那个错误,还有一个就是空白一片,怎么会这样呢?
      

  14.   

    那个按钮是在 mysql odbc的配置窗口上面
    叫做
    test data sourcephp.ini
    display_errors=On就可以显示错误了
      

  15.   

    为什么要用odbc连接,php默认支持mysql的
    再说如果用数据源的话,那得先安装mysqlodbc
      

  16.   

    我觉得他应该装上odbc了吧,呵呵
    否则,怎么建立odbc的mysql,数据源丫。补充一点:我用的是 3.51的驱动,^_^
      

  17.   

    to goodname,
        对不起,昨天网断了,没有回你的贴子:)
        你说得我试过了,
    也显示success了,但是在php expert editor中还是没有运行结果,只是空白一片,在IE 中也是这样,连错误信息也没有了,我都不知怎么改了!
    算了,都是周末了,我先给分吧,下个星期还请多帮忙,多谢了!
      

  18.   

    php.ini
    display_errors=On就可以显示错误了