与在选择查询变量替换字段名

问题描述 投票:1回答:2

我想用变量来代替字段名获得PHP和MySQL从表中的数据。

select * from demo where variable-1

而不是select * from demo where fieldname=1

因为有从下拉选择超过50字段名。

mysql sql variables
2个回答
5
投票

变量将不会在field names工作,以及table Names。唯一的一次,它的作用就是当你创建动态SQL语句,如

SET @variableName = 'fieldname';
SET @sql = CONCAT('SELECT * FROM demo WHERE `', @variableName, '` = 1');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

0
投票

您可以使用Prepared Statements

delimiter // 
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
    SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
    PREPARE stmt FROM @s;
    EXECUTE stmt;
END
//
delimiter ;
© www.soinside.com 2019 - 2024. All rights reserved.