[英]Unknown column c1 in WHERE clause node.js sql
我得到這樣的數據
category : "c1,c2"
我在做category.split(',');
獲取這樣的數據
category: [ 'c1', 'c2' ]
我想像這樣將 IN ( ) 運算符傳遞給 SQL 查詢,但無法找出方法。
SELECT * FROM employee emp WHERE ......... AND emp.category in ( 'c1','c2' ) ORDER BY..
現在如果我通過category.toString()
它就像這樣
SELECT * FROM employee emp WHERE ......... AND emp.category in ( c1,c2 ) ORDER BY..
這給出了錯誤: 'where 子句'中的'未知列'c1'',
您應該嘗試 Paramtries 查詢,它將解決您的問題。
像這樣通過(?)
SELECT *
FROM employee emp
WHERE .........
AND emp.category IN ( ? )
ORDER BY ..
您可以在參數數組中傳遞您的值。
如您所述,您需要將查詢構建為emp.category in ( 'c1','c2' )
。
您的方法當前emp.category in ( c1,c2 )
因此,您需要正確的 escaping 值,以便確實引用攝取的值。 這取決於您如何准確構建查詢,但適當的 escaping 機制不應該有這個問題。
首先使用category: "'c1','c2'"
進行測試,只是為了將內容包裝在您的腦海中。
但是您肯定需要深入了解您的查詢是如何構建的。 無效的 escaping 機制會導致很多安全問題,因為它不可避免地會導致 SQL 注入攻擊。
在 node.js 土地中,您可以使用https://www.npmjs.com/package/pg-format模塊以正確轉義手工構建的查詢。 您還可以使用更高級別的查詢構建器,例如 knex。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.