0

我在 MySql 数据库中插入数据,当我单击保存按钮时,它说,

sql 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在第 1 行的 "grade1") VALUES('section1')' 附近使用

我从其他可以正常工作的插入语句中复制了它,但是在仅包含组合框和文本框的表单中,它给了我这种错误。他们还希望我学习如何对其进行参数化,这样我就可以摆脱他们所说的 SQL 注入。任何帮助表示赞赏。这是示例代码:

conn = New MySqlConnection
conn.ConnectionString = "server=localhost; userid=root; password=root; database=dbase"

Try

    conn.Open()
    Sql = "INSERT INTO dbase.tblgrade_section ('" & cbGradeLvl.SelectedItem & "') VALUES('" & txtNewSec.Text & "') "
    cmd = New MySqlCommand(Sql, conn)
    dr = cmd.ExecuteReader
    MsgBox("Data saved", vbInformation, "Saving Data")
    conn.Close()

Catch ex As Exception
    MsgBox(ex.Message)
Finally
    conn.Close()
End Try
rem End Sub
4

2 回答 2

2

基本 MySQL 101:字段/表名称不能用反引号以外的任何内容引用。您已经使用',它将您的字段名称转换为字符串文字。一旦它是一个字符串文字,它就不再是一个表/字段名:

Sql = "INSERT INTO dbase.tblgrade_section (`" & cbGradeLvl.Selected ... "`...."
                                           ^-----------------------------^---

请注意指示的更改。

于 2015-01-07T18:53:44.750 回答
0

您不能在列名周围加上引号。使用准备好的语句来“防范” sql 注入。

于 2015-01-07T18:58:28.763 回答