mysqli_query返回对象不是资源

时间:2014-10-03 16:22:36

标签: php mysqli

如果有人不能告诉我如何使用mysqli_query而不是对象返回资源,我会很高兴,因为无论何时我使用mysqli_field_name或mysql_fetch_row它都会返回此错误“mysql_field_name()期望参数1是资源,对象给出了“。并且介意你对mysqli方法并不熟悉。有些帮助将会受到批评。下面是我的代码以获取完整的详细信息。

<?php
    $dns="mysql:dbname=name";
    $username="name";
    $password="";



    $con = new mysqli('localhost', 'root', '', 'oysg');


    $export=mysqli_query($con,"SELECT * FROM applicant");
    $header = '';
    $data ='';
    // $export = $stmt;

    // extract the field names for header 
    $fields = 25;

    for ( $i = 0; $i < $fields; $i++ )
    {
        $header .= mysql_field_name( $export , $i ) . "\t";
        echo $header;
    }
    echo '<br>';
    echo '<br>';
    // foreach ( $fields2 as $headers )
    // {
    //     $header .=  $headers. "\t";
    //     echo $header;
    // }

    // export data 
    while( $row = mysql_fetch_row( $export ) )
    {
        $line = '';
        foreach( $row as $value )
        {                                            
            if ( ( !isset( $value ) ) || ( $value == "" ) )
            {
                $value = "\t";
            }
            else
            {
                $value = str_replace( '"' , '""' , $value );
                $value = '"' . $value . '"' . "\t";
            }
            $line .= $value;
        }
        $data .= trim( $line ) . "\n";
    }

    $data = str_replace( "\r" , "" , $data );

    if ( $data == "" )
    {
        $data = "\nNo Record(s) Found!\n";                        
    }

    // allow exported file to download forcefully
    header("Content-type: application/octet-stream");
    header("Content-Disposition: attachment; filename=export.xml");
    header("Pragma: no-cache");
    header("Expires: 0");
    print "$header\n$data";
    ?> 

提前致谢

1 个答案:

答案 0 :(得分:0)

你正在混合OOP和程序。

你在写作时使用OOP:

$con = new mysqli('localhost', 'root', '', 'oysg');

$con现在是mysqli的实例,包含成员属性和方法。

但是,使用如下语法:

$export=mysqli_query($con,"SELECT * FROM applicant")

不是OOP的做事方式。使用任何mysqli_*函数意味着您的$con是以下结果:

$con = mysqli_connect('localhost', 'root', '', 'oysg');

如果你想坚持使用OOP,我相信你会追随以下mysqli_query等价物:

$export = $con->query("SELECT * FROM applicant");

$export现在是an instance of mysqli_result

使用OOP风格也应该有助于扩展组合和匹配,例如: mysqli_querymysql_fetch_name后者遗漏了i中的mysqli