0

INNER JOIN を使用して 2 つのテーブルを接続し、ページごとに表示される結果の量を ROW_NUMBER で制限しようとしています。

$tsql = "SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, * FROM products INNER JOIN product_catalogue ON products.catalogueID = product_catalogue.catalogueID
        WHERE category1 = '1') AS products1
WHERE rownum >= 0 AND rownum <= 6";

  $stmt = sqlsrv_query($conn,$tsql);

 while($row = sqlsrv_fetch_array($stmt)){ 
        echo $row['productID']. "<br/>";
         echo $row['product_name']. "<br/>";

  }

「sqlsrv_fetch_array() はパラメーター 1 がリソースであることを期待しています」というエラーが表示されます。INNER JOIN を使用せずにクエリを実行すると、ページに結果が表示されるため、INNER JOIN を使用していることと関係があることがわかります。

$tsql = "SELECT *
FROM (SELECT ROW_NUMBER() OVER(ORDER BY productID) AS
rownum, * FROM products ) AS products1
WHERE rownum >= 0 AND rownum <= 6";
4

1 に答える 1

0

MS SQLサーバーについて話していると思います。私はphpでコーディングしていませんが、最初に次のことを確認する必要があります。

  1. クエリは SQL のみを使用して機能しますか (SSMS の MS SQL)
  2. 特定の列名、おそらく二重の名前の列があります! たとえば、「id」という名前の 2 つの列を指定すると、結果に同じ列が 2 回表示されます。SQL では問題ありませんが、ほとんどのデータベース コネクタ ドライバでは問題になります。
  3. すべてが機能しない場合は、クエリを作成します ( CREATE QUERY qry_yourQuery AS ) SELECT * FROM qry_yourQuery を使用してから
于 2012-05-12T07:14:01.333 に答える