Как получить количество затронутых_строк в mysqli OOP? Mysqli OOP затронутые_строки возвращают -1

Каков точный способ получить количество затронутых строк в mysqli OOP. Я создаю класс crud, используя msqli OOP. Я получаю -1.

    $query = "SELECT * FROM `sk_courses`";
    $stmt = $this->_mysqli->prepare($query);
    $stmt->execute();
    $stmt->affected_rows ;

    var_dump($stmt->affected_rows);    // output is int -1

Вывод var_dump($stmt):

   object(mysqli_stmt)[7]
   public 'affected_rows' => null
   public 'insert_id' => null
   public 'num_rows' => null
   public 'param_count' => null
   public 'field_count' => null
   public 'errno' => null
   public 'error' => null
   public 'error_list' => null
   public 'sqlstate' => null
   public 'id' => null

person Zohaib    schedule 13.12.2013    source источник
comment
Это просто. Просто прочтите страницу руководства для используемой вами функции.   -  person Your Common Sense    schedule 13.12.2013
comment
Стыдно голосовать за такие вопросы. Позор для самого искусства программирования.   -  person Your Common Sense    schedule 13.12.2013
comment
Дубликат stackoverflow. ком/вопросы/1018336/   -  person Your Common Sense    schedule 13.12.2013
comment
@YourCommonSense .. Вы пытались правильно понять мою проблему, прежде чем комментировать ..? вывод $stmt-›affected_rows равен -1   -  person Zohaib    schedule 13.12.2013
comment
Да, я вполне понимаю обе ваши проблемы. Либо с функцией, для которой вы понятия не имеете, для чего она используется, и та, которая является вашей настоящей проблемой   -  person Your Common Sense    schedule 13.12.2013
comment
У вас есть решение моей настоящей проблемы...? Тогда, пожалуйста, поделитесь.   -  person Zohaib    schedule 13.12.2013


Ответы (1)


Это проблема с пониманием документации mysqli_stmt, которая включает страницы для каждой из функций ниже.

Запрос SELECT не повлияет ни на какие строки.

Глядя в руководство на [php docs для затронутых строк mysqli ]. В разделе Возвращаемые значения:

-1 indicates that the query returned an error.

Однако, это действительно смешанный вопрос.

Чтобы получить количество строк, попробуйте:

$query = "SELECT * FROM `sk_courses`";       // or
$query = "SELECT lastName, firstName, ... FROM `sk_courses`";

$stmt = $mysqli->prepare($query);
$stmt->execute();
$stmt->store_result();                      // without this line, num_rows = 0
print $stmt->num_rows;

Затем, если вас интересует результирующий набор, добавьте:

// bind result variables. next statement 'binds' them in the order of the select query
$stmt->bind_result($last, $first, .... );  // must have variable for EACH column

while ($stmt->fetch()) {
    printf ("%s (%s)\n", $first, $last);
}
person David    schedule 07.05.2014