2014-11-15 154 views
0
 public function getMaxRID() { 

      // open a connection to database 
      $conn = $this->getConnection(); 

      if ($conn->connect_error) { 
       die("can not connect to database"); 
      } 

      $query = "SELECT MAX(RID) AS MAXRID FROM Words"; 
      $result = $conn->query($query); 

      if ($result->num_rows > 0) { 

       echo $result->fetch_assoc()["MAXRID"]; 
      } 
     } 

這是我獲取字段最大值的方法。在這種情況下,我們知道我們只有一行和一個字段「MAXRID」。我用這種方法得到它,但它是推薦的方式?
fetch_assoc()方法不在$ result對象方法的建議列表中!但是,當我寫這個,執行沒有任何問題!從MySql數據庫中提取值/行

回答

1
public function getMaxRID() { 
      // open a connection to database 
      $conn = $this->getConnection(); 
      if ($conn->connect_error) { 
       die("can not connect to database"); 
      } 
      $query = "SELECT MAX(RID) AS MAXRID FROM Words"; 
      $result = $conn->query($query); 
      if ($result->num_rows() > 0) { 
       echo $result->row_array()["MAXRID"]; $result->free_result(); Unset($query); 
      } 
     } 
  • 的變化:

    1)總是使用NUM_ROWS()函數

    2),以檢索一個行總是使用row_array()

    3)使用free_result()來釋放其中的內存

    4)取消設置查詢中使用的變量

+0

取消設置$查詢是沒有必要的,它被釋放時,功能被執行。 – Mario

+0

但是,如果你使用相同的變量,它會有所幫助 –

1

我會說你的方式沒有太大的錯誤,但是你可以直接讀取那一列,因爲你只需要MAXRID的值。

您使用mySQLiPDO有直接檢索列的方法:

因此,我建議儘量使用fetchColumn

if ($result->rowCount() > 0) 
{ 
    echo $result->fetchColumn(); 
} 
+0

僅供參考:OP使用的是mysqli API,而不是PDO – Ghost

+0

你的權利是我的錯。嗯,我認爲mysqli沒有類似的功能。去更新我的答案。 – Mario

+0

不用擔心沒有傷害:)只是指出一些信息。 – Ghost