0
format(sql, sizeof(sql), "SELECT * FROM `datab` WHERE License = %s", searchPlate);

この形式でクエリを実行すると、この結果のすべての行が得られますが、私がやろうとしているのは、ex. すべての行ではなく、この結果を持つ 3 行目、5 行目、または 10 行目です。これどうやってするの?

4

1 に答える 1

0

次のようなものが MySQL で動作するはずです。

format(sql, sizeof(sql), "SELECT * FROM `datab` WHERE License = %s ORDER BY IDColumnNameGoesHere LIMIT %d, 1", searchPlate, MyDesiredRowInteger);

いくつかのポイント:

  • %d正しくない可能性があります。整数には正しい記号を使用してください。
  • あなたは間違いなく特定のRDBMSを使用しています。ドキュメントを調べて見つける必要があります。SQL は標準であり、MySQL や SQL-Server などはその標準の実装です。使用している実装を見つける必要があります。
  • これまでのように変数を文字列に挿入すると、SQL インジェクションに対して非常に脆弱になります。常にクエリをパラメータ化する必要があります。
  • LIMIT は MySQL に固有のもので、別の RDBMS を使用している場合は、別のルートに進む必要があります。たとえば、SQL-Server では TOP を使用できますが、これにはパラメーターが 1 つしかないため、必要なレコードを 1 つだけ取得するために、min または max を使用する必要があります。
于 2012-10-23T13:17:03.740 に答える