所以我有這個:
var dates = {
monday: req.body.monday,
tuesday: req.body.tuesday,
wednesday: req.body.wednesday,
thursday: req.body.thursday,
friday: req.body.friday,
saturday: req.body.saturday,
sunday: req.body.sunday
}
console.log(Object.values(dates))
其作業方式是您可以在前端選擇一個復選框,無論您是否選中它,所有結果都將發送到后端。現在,我需要對這些結果進行排序,以僅插入選定的結果(它們沒有定義的值,如下面的陣列回應)。
在 for 回圈結果集中,它回傳如下:
[
'2', undefined,
undefined, undefined,
undefined, undefined,
'1'
]
如您所見,5/7 是未定義的。所以我有一個標準的插入查詢到 SQL,但我只需要插入定義的值。所以在我的腦海里我在想insert into clients where Object.values(dates) != undefined,但我知道那是不對的,尤其是因為現在sql查詢的作業方式是這樣的,哈哈。
我有這個:
var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" name "', '" email "', '" phonenumber "', '" req.session.username "', '" hour "', '" minute "', '" dates "')";
我怎樣才能做到這一點?
uj5u.com熱心網友回復:
除了實際問題之外,使用未經處理的輸入以代碼段中顯示的方式創建 sql 字串是一個巨大的風險。它允許攻擊者執行 sql 注入。在此處查看更多資訊:https : //owasp.org/www-community/attacks/SQL_Injection
uj5u.com熱心網友回復:
如果您希望將值作為逗號分隔的字串插入,您可以通過執行以下操作來實作:
const formattedString = Object.values(dates).filter(el => el).join(', ');
var addclient = "insert into clients (NAME, EMAIL, PHONE_NUMBER, TRAINER_NAME, HOUR, MINUTE, DATES) values ('" name "', '" email "', '" phonenumber "', '" req.session.username "', '" hour "', '" minute "', '" formattedString "')";
請注意,我將插入方法中的“日期”更改為新的“formattedString”。鑒于您的示例, formattedString 將是“2, 1”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/344688.html
標籤:javascript sql 节点.js 数据库
上一篇:檢查采樣貓鼬的結果
下一篇:一一請求URL
