2012-01-16 3 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

コードに2つのエラーがあります。この文行うと:

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

をあなたは$ofertaを使用しますが、varは$id_ofertaでなければならないこと(関数のパラメータを見て)いるようです。

さらに、elseの閉じ括弧の後には、セミコロンがありません。そこには存在してはいけません。

+0

幸運なセミコロンを解読しないでください:) – Tim

+0

私は数えているので、明らかに行の数は常に同じです。 – Daniel

+0

しかし、あなたも正しいです。私はこれらのパラメータを変更するのを忘れていました。 – Daniel

3

$sql->fetch()関数ではありません - $sql->fetch_all()を試してみてください。

これは、すべての行をフェッチする必要があります。次に、$sql->num_rows変数が正しいはずです。

関連する問題