2014-10-03 55 views
0

我会亲切地appriciate,如果有人不能提示我如何返回一个资源与mysqli_query,而不是一个对象,因为每当我用它与mysqli_field_name或mysql_fetch_row它返回我这个错误“mysql_field_name()期望参数1是资源,对象给予“。并且介意你不是很熟悉mysqli方法。一些帮助将被appriciated.Below这里是我的代码的全部细节。mysqli_query返回对象不是资源

<?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

你在混合'mysqli_ *'和'mysql_ *'扩展吗?或者是一个错字? – mithunsatheesh 2014-10-03 16:29:38

回答

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,其中后者缺少imysqli

+0

我做了更改,但仍然得到mysql_field_name()期望参数1是资源,对象given.What我想实际上是将我的数据库导出到excel.so我需要使用mysql_field_name()返回字段名称但它说一个对象是paased的它不是一个资源。我怎么去那个请求 – 2014-10-03 16:36:15

+0

@AlofeOluwafemi如果你已经做了改变使用OOP,并且你仍然使用'mysql_field_name'你没有做出足够的改变。假设'$ export'是'mysqli_result'的一个实例,那么:'$ export-> fetch_field_direct($ i)'而不是'mysql_field_name'。 [这在'mysql_field_name'的文档中很明显。](http://php.net/mysql_field_name) – zamnuts 2014-10-03 16:43:17

+0

acyually使用了$ export-> fetch_field() - > name.but我该怎么做像mysql_fetch_row($ export )使用mysqli class.thanks – 2014-10-03 16:49:00