Tulis semula tajuk sebagai: Dapatkan nama medan MySQL menggunakan pembolehubah
P粉237647645
P粉237647645 2023-10-20 09:39:08
0
2
629

Adakah mungkin untuk memilih medan dengan nama rentetan?

Pilih "Nama Medan" dalam

从表

Saya memerlukan pencetus ini untuk mempunyai nama medan dinamik Sesuatu yang serupa

SET fieldname = NEW.`name`;
UPDATE table SET fieldname = 1 ;


P粉237647645
P粉237647645

membalas semua(2)
P粉986028039

Seperti yang dicadangkan oleh jawapan yang betul ini, anda juga boleh melakukan ini dalam prosedur tersimpan, yang berfungsi hebat untuk saya dalam komuniti MySQL 8x:

CREATE DEFINER=`root`@`127.0.0.1` PROCEDURE `SP_LIST_COLLECTORS`(
    IN P_email VARCHAR(60),#Admin email
    IN P_password_hash VARCHAR(255),#Admin hash
    IN P_filter_field VARCHAR(80),
    IN P_filter_value VARCHAR(255)
)
BEGIN
DECLARE V_filter_field VARCHAR(80);
    SET V_filter_field = P_filter_field;
    BEGIN
        GET DIAGNOSTICS CONDITION 1 @ERRNO = MYSQL_ERRNO, @MESSAGE_TEXT = MESSAGE_TEXT;
        SELECT 'ERROR' AS STATUS, CONCAT('MySQL ERROR: ', @ERRNO, ': ', @MESSAGE_TEXT) AS MESSAGE;
    END;
    SET @statement = CONCAT('SELECT collector_id, email, address, post_code, phone, alt_phone, contact_name
    FROM collectors_table
    WHERE ',P_filter_field, '=\'', P_filter_value, '\';');
    #SELECT collector_id, email, address, post_code, phone, alt_phone, contact_name FROM collectors_table WHERE (V_filter_field) = P_filter_value;
    PREPARE stmnt FROM @statement;
    EXECUTE stmnt;
END
P粉190443691

Jika rentetan berada dalam aplikasi luaran anda (seperti PHP), sudah tentu, bina penyata MySQL sahaja.

Tidak jika rentetan berada di dalam jadual MySQL. MySQL tidak mempunyai eval() atau fungsi sedemikian. Perkara berikut adalah mustahil:

Andaikan anda mempunyai meja queries,其中的字段 columnname 引用表 mytable 中的列名称之一。 查询中可能有其他列,允许您选择所需的列名.

INSERT INTO queries  (columname) VALUES ("name")
SELECT (select columnname from queries) from mytable

Walau bagaimanapun, anda boleh menggunakan penyata yang disediakan Ambil perhatian bahawa ini sangat meretas.

SELECT columnname from queries into @colname;
SET @table = 'mytable';
SET @s = CONCAT('SELECT ',@colname,' FROM ', @table);

PREPARE stmt FROM @s;
EXECUTE stmt;
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!