2012-01-16 6 views
0

Я пытаюсь этот код, но я хочу знать, каково количество результатов этого запроса. Если сделать тот же запрос в консоли mysql, я получаю 4 результата, но с этим кодом я получаю 0 строк. Каков правильный способ получить количество строк?получить количество строк - mysqli

function check_oferta_existe($db, $id, $id_oferta) { 
      $sql = $db -> prepare(" 
      SELECT COUNT(offer) 
      FROM offer 
      WHERE company_users_id_user1 = ? AND offer = ? AND state = 0 
      "); 

      $sql -> bind_param('is', $id, $oferta); 
      $sql -> execute(); 
      $sql -> fetch(); 
      $sql->store_result(); 
      $rows = $sql->num_rows; 

      var_dump($rows); // 0, should be 4 
      if ($rows == 1) { 
       return true; 
      } 
      else { 
       return false; 
      }; 
     } 
+0

Это не проблема с 'num_rows', поскольку это действительно свойство. Проверьте инструкцию SQL. Вероятно, это не так. –

ответ

3

Я вижу две ошибки в вашем коде. Когда вы сделаете это заявление:

$sql -> bind_param('is', $id, $oferta); 

вы используете $oferta но кажется (глядя на параметры функции), что переменная должна быть $id_oferta.

Кроме того, после закрывающей скобки вашего else у вас есть точка с запятой, которой не должно быть.

+0

Не упускайте счастливую точку с запятой :) – Tim

+0

Я делаю счет, поэтому, очевидно, количество строк всегда одно и то же. – Daniel

+0

Однако вы тоже правы. Я забыл изменить эти параметры. – Daniel

3

$sql->fetch() не является функцией - попробуйте $sql->fetch_all().

Это должно получить все строки для вас, а затем должна быть правильная переменная $sql->num_rows.