2 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
該代碼生成的 SQL 查詢是:
Select * from 'student' where username="noor123" and password="123456"
表不能在里面'',因?yàn)槟遣皇钦_的 SQL 語法。
您不能使用參數(shù)作為表名,而是這樣做,這樣您就不會(huì)獲得''表名:
connection.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.CommandText = "Select * from " + userType.ToString() + " where username=@user and password=@pass";
cmd.Parameters.AddWithValue("@user", user);
cmd.Parameters.AddWithValue("@pass", pass);
cmd.Connection = connection;
MySqlDataReader login = cmd.ExecuteReader();

TA貢獻(xiàn)1111條經(jīng)驗(yàn) 獲得超0個(gè)贊
如果這只是一個(gè)作業(yè)而不是真實(shí)世界的程序,那么請(qǐng)執(zhí)行以下操作。
確保變量 userType、user 和 pass 是 String 類型。
確保 userType 表示語法正確的表或視圖名稱。
更新這一行
cmd.CommandText = $"Select * from {userType} where username=@user and password=@pass";
刪除此行
cmd.Parameters.AddWithValue("@userType", userType);
我相信這應(yīng)該有所幫助。我沒有檢查自己。
然而在現(xiàn)實(shí)世界中你不應(yīng)該這樣編程。在處理身份驗(yàn)證/授權(quán)時(shí)有許多安全考慮因素,更不用說 sql 注入的可能性了。如果這是一個(gè)真實(shí)的項(xiàng)目,那么我建議您閱讀有關(guān)該主題的適當(dāng)材料。
- 2 回答
- 0 關(guān)注
- 132 瀏覽
添加回答
舉報(bào)