2014-10-03 58 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