[英]MySql quick user select
我有一個Users表,並且正在獲取具有ID的用戶詳細信息(通常方式)。
這就是我獲取用戶詳細信息的方式。
select id,kullaniciadi,FotoGet(K.Foto,K.Gender) from kullanicilar K where id=1;
FotoGet
函數始終返回字符串值,例如“ Photos / sssss.jpg”
到目前為止,我還可以使用這種方法,但是我想知道如何使用單個函數來完成此操作? 喜歡
set @uid=1;
Select UserGet(@uid);
我將id
放在括號內,該函數將運行我的選擇查詢並返回所有用戶詳細信息列。 id
, kullaniciadi
, FotoGet(K.id,K.Foto,K.Gender)
我可以使用這種方式獲取詳細信息嗎?
MySQL存儲函數不能返回多列,它只能返回單個標量值。
但是您可以設計一個存儲過程以返回結果集:
CREATE PROCEDURE UserGet(uid INT)
SELECT id, kullaniciadi, FotoGet(K.Foto,K.Gender) FROM kullanicilar K WHERE id=uid;
然后這樣稱呼它:
CALL UserGet(1234);
它返回結果集,就像SELECT
查詢一樣。
DELIMITER //
CREATE PROCEDURE UserGet(IN uid INT, IN column_name VARCHAR(64))
BEGIN
SET @sql = CONCAT('SELECT id, ', column_name, ' FROM kullanicilar K WHERE id=?');
PREPARE stmt FROM @sql;
SET @uid = uid;
EXECUTE stmt USING @uid;
END//
DELIMITER ;
這樣稱呼它:
CALL UserGet(1234, 'kullaniciadi');
請記住,編寫代碼以傳遞有效的列名作為過程參數是您的責任。 如果您允許傳遞不可信的內容,則可能是SQL注入漏洞。
重新發表您的其他評論:
這應該工作正常:
CALL UserGet(1234, 'FotoGet(Foto,Gender)');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.