2013-01-24 72 views
-1

我正在嘗試從表中執行SELECT *,其中該表的名稱本身是從另一個查詢中獲取的。我想我正在打結。下面是我得到了什麼:mysql - 如何返回準備好的語句結果集?

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 * FROM tmp_options ;」確實有一些行。但是,我如何獲得他們?

我想要做的就是將該查詢放入一個PHP字符串中,並使用mysqli_query()運行它。這不會起作用嗎?

+1

這實際上並不是一個查詢,而是一組查詢。另外,我有一種感覺,他們中的大多數都毫無用處,而且商業任務可以用一種不那麼辛苦的方式解決。 –

+0

你有......感覺?你的蜘蛛感是否刺痛?這個部隊是否有一個干擾? – Wintermute

回答

1

我對PHP沒有任何線索,但是我碰巧知道mysqli_query()僅適用於一個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步驟。目前還不清楚,爲什麼以及如果你真的需要臨時表。