2014-11-15 5 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 object! Но когда я пишу это, выполняется без проблем!Получение значений/строк из базы данных 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.

Вы используете mySQLi, PDO имеет метод для извлечения колонны непосредственно:

Так я бы рекомендовал использовать fetchColumn:

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

FYI: OP использует API mysqli, а не PDO – Ghost

+0

Справа моя ошибка. Ну, я думаю, что для mysqli нет аналогичной функции. Переход к обновлению моего ответа. – Mario

+0

никаких проблем не причиняет вреда :) просто указывая некоторую информацию. – Ghost

Смежные вопросы