我正在尝试从表中执行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 * FROM tmp_options;”确实有一些行。但是我如何获得它们?
我想要做的就是将该查询放入PHP字符串并使用mysqli_query()运行它。这不起作用吗?
答案 0 :(得分: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
步骤。并且不清楚,为什么以及如果你真的需要临时表。