2017-10-10 34 views
0
CREATE PROCEDURE ts(IN col1 varchar(100),IN val int, OUT res int) 
BEGIN 

SET @s=CONCAT("SELECT ISNULL(NULLIF(",col1,",'')) INTO @res FROM demo WHERE d=",val); 
PREPARE stmt1 FROM @s; 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 

SELECT @res INTO res; 

END 

我獲得以下錯誤我想dyanmic列名的空計數

1064 - 你在你的SQL語法錯誤;檢查對應於您的MariaDB服務器版本的手冊,以便在第4行使用正確的語法

我想在PHP中使用此存儲過程?請幫忙!!

回答

0

ISNULL不SQL92,請嘗試:

sum(case when field is null then 1 else 0 end) 

爲更好的便攜性

+0

謝謝,我想執行的PHP這個存儲過程使用mysqli的,但是,這是行不通的! –

+0

您的查詢不夠動態以保證存儲過程或動態查詢生成。考慮在PHP中生成查詢並將所有過程放在一起。 –