1

関数 mysql_store_result() および mysql_fetch_row() を別の関数で使用すると問題が発生します。

私がこのようにやっていると、すべてうまくいきます:

int main() {
  MYSQL *connection;
  MYSQL_RES *result;
  MYSQL_ROW row;
  //Connect to database

  mysql_query(connection, "SELECT column1 FROM table ORDER BY column1 ASC");
  result = mysql_use_result(connection);
  row = mysql_fetch_row(result);
  puts(row[0]);

  //Free results & close connection
}

しかし、2 つの異なる関数でそれを実行しようとすると、常に mysql_fetch_row(result) で次のようなエラーが表示されます。

これらの2つの方法を試しました(結果を解放したり、database()で接続を閉じたりしませんでした):

int main() {
  MYSQL_RES *result;
  MYSQL_ROW row;

  database(result);
  row = mysql_fetch_row(result);
  puts(row[0]);

  //free results
}

void database(MYSQL_RES *result) {
  MYSQL *connection;
  //Connect to database

  mysql_query(connection, "SELECT column1 FROM table ORDER BY column1 ASC");
  result = mysql_use_result(connection);
}

int main() {
  MYSQL *connection;
  MYSQL_RES *result;
  MYSQL_ROW row;

  database(connection);
  result = mysql_use_result(connection);
  row = mysql_fetch_row(result);
  puts(row[0]);

  //close connection & free results
}

void database(MYSQL *connection) {
  //Connect to database

  mysql_query(connection, "SELECT column1 FROM table ORDER BY column1 ASC");
}

だから私の質問:

  1. 私は何を間違っていますか?
  2. すべての結果を RAM の異なる構造にコピーせずに、選択と出力を 2 つの異なる関数に含めることは可能ですか?
  3. オブジェクト指向のない手続き型プログラミングでこれを実装しようとしています。ベストプラクティスは何ですか?

助けてくれてありがとう

4

1 に答える 1