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

时间:2013-01-24 10:47:22

标签: php mysql prepared-statement execute

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

1 个答案:

答案 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步骤。并且不清楚,为什么以及如果你真的需要临时表。