這是我的程序。如何處理mysql程序中的where子句?
DELIMITER //
drop procedure if exists GetID;
CREATE PROCEDURE GetID(IN tb VARCHAR(255), in name2 varchar(255))
BEGIN
set @sel = concat('select id FROM ', tb, ' WHERE ename = ', name2);
prepare stmt from @sel;
execute stmt;
deallocate prepare stmt;
END //
DELIMITER ;
當我嘗試使用GetID('city','ny')執行存儲過程時。我WHERE子句中的錯誤
未知列「NY」 ......
這裏「城市」是表名。哪裏不對?
它的工作原理!你能否解釋爲什麼我應該在'ename ='後面加三個引號,最後是四個引號?非常感謝。 – dullboy
我仍然無法弄清楚爲什麼我需要在'ename ='和最後四個引號之後使用三重引號。假設查詢應該看起來像這樣,'從tb where ename ='name2''中選擇id。如果我們需要使用一個多引號來逃避單引號,它應該看起來像'從tb中選擇id,其中ename =''name2'''。我錯過了什麼?非常感謝。 – dullboy
Nooooooo。 SQL注入失敗。 –