C API を使用して、LAMP ボックスのテーブルに対してシリアル SELECT クエリを実行している状況があります。最初のクエリは、単一のレコード (注文ヘッダー) を選択します。次に、2 番目のクエリは、最初のクエリから返されたレコード番号を使用して、注文ヘッダー レコード番号によってインデックス付けされた明細項目を選択します。最初のクエリは正常に動作し、2 番目のクエリは常に 0 行を返します (mysql_fetch_numrows() をチェックするか、mysql_fetchrow() を実行する while ループのいずれかによって)。コンソールに SQL を出力し、それをコピーして MySQL クライアントに貼り付けます。DBに表示される予想される3つのレコードを返します。これにより、SQL ステートメントが正しいという結論に至ります。
各クエリの後に mysql_free_result() 呼び出しを行います。私は C API を使用した経験があまりないので、クローズまたは解放しなければならないことが他にあるのではないかと考えています。イベントのシーケンスは次のとおりです。
mysql_init()
mysql_real_connect()
mysql_query()
mysql_store_result()
mysql_fetch_row()
mysql_free_result()
mysql_query()
mysql_store_result()
mysql_fetch_row() <--- fails, no error code, zero rows returned
これらすべてに関与する唯一のグローバル変数は、接続ハンドルです。