-1

テーブルからSELECT*を実行しようとしています。ここで、そのテーブルの名前自体は別のクエリから取得されます。私は結び目で自分自身を結んでいると思います。これが私が持っているものです:

SELECT options_table INTO @tableName FROM registrant_fields WHERE id = 9;

SET @sql_text_1 = concat('CREATE TABLE tmp_options LIKE ', @tableName);
PREPARE stmt_1 FROM @sql_text_1 ;
EXECUTE stmt_1;

SET @sql_text_2 = concat('INSERT tmp_options SELECT * FROM ', @tableName);
PREPARE stmt_2 FROM @sql_text_2;
EXECUTE stmt_2;

SELECT * FROM tmp_options;

DEALLOCATE PREPARE stmt_1;
DEALLOCATE PREPARE stmt_2;

つまり...そのロットをPHPMyAdminに貼り付けて実行すると、各ステートメントの結果がそれぞれ追加され、「SELECT*FROMtmp_options;」ということを学びます。確かにいくつかの行があります。しかし、どうすればそれらを取得できますか?

私がやりたいのは、そのクエリをPHP文字列にドロップし、mysqli_query()で実行することだけです。それはうまくいきませんか?

4

1 に答える 1

1

PHP については何も知りませんが、たまたま mysqli_query() が 1 つの SQL ステートメントでのみ機能することは知っています (セキュリティ上の理由から)。

そうすることをお勧めします(疑似コード、SQL部分を除く)

somePHPvariableForTableName = ("SELECT options_table FROM registrant_fields WHERE id = 9;");
query("CREATE TABLE whyDoIneedAtmpTable AS SELECT * FROM $somePHPvariableForTableName");
query("SELECT * FROM whyDoIneedAtmpTable;");

以上です。その余分なINSERTステップは必要ありません。そして、なぜ、そして本当に一時テーブルが必要なのかは明らかではありません。

于 2013-01-24T12:35:45.987 に答える