如何返回预准备语句结果集


how to return prepared statement resultset?

我正在尝试从表中执行 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() 运行它。这行不通吗?

我对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步骤。目前尚不清楚,为什么以及是否真的需要临时表。