簡體   English   中英

WHERE 子句 node.js sql 中的未知列 c1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM