【问题标题】:MySQL INSERT syntax error near '' at line 1 visual c# [closed]MySQL INSERT 语法错误在第 1 行 Visual c# 的 '' 附近 [关闭]
【发布时间】:2017-02-23 03:54:56
【问题描述】:

我很难解决这个关于MySQL Syntax 的错误。

这里是MySQL syntax

try
        {
            SQL = "INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no) VALUES (NULL, '" + cmbbxPaymentType.Text + "', CURRENT_DATE(), CURRENT_TIME(), '" + txtbxPaymentAmt.Text + "', '" + msktxbxStudNo.Text + "'";
            // INSERT INTO `studentpaymentqueuing`.`payment_history_tbl` (`id`, `payment_type`, `date`, `time`, `amount`, `student_no`) VALUES (NULL, 'Certificate of Enrollment', '2017-02-24', '10:19:28', '60.00', '13-0695');
            cmd = new MySqlCommand(SQL, conn);
            conn.Open();
            cmd.ExecuteNonQuery();

            conn.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

错误信息:

您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 '' 附近

有什么想法吗?

【问题讨论】:

  • 如果有人输入 " 或只是 ',您的代码肯定会失败。使用 SQL 参数来修复它。
  • 这是一个想法……这个问题中的代码遵循我们在易受 SQL 注入攻击的代码中经常看到的模式。

标签: c# mysql .net


【解决方案1】:

你错过了)吗?

SQL = "INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no) VALUES (NULL, '" + cmbbxPaymentType.Text + "', CURRENT_DATE(), CURRENT_TIME(), '" + msktxbxStudNo.Text + "')";

【讨论】:

  • 哦!我的坏 -___- 我想我已经习惯了 SELECT 声明最后没有“)”。无论如何谢谢:)
  • 我以为MySql并没有完全丢失并且支持参数化查询(如stackoverflow.com/questions/652978/…),您确定您在回答中推荐最佳实践吗?
  • @AlexeiLevenkov 你说得对,这里只是一个答案,也许不值得推荐,但答案就是答案,如果答案有误,你可以告诉我,我会修复它。如果你有其他更好的答案,那么你在这里回答。感谢您的关注。
【解决方案2】:

使用 String.Format 可以帮助您获得漂亮的代码并轻松找到错误。
示例:


String query = String.Empty;
query += String.Format("INSERT INTO payment_history_tbl (id, payment_type, date, time, amount, student_no)");
query += String.Format(" VALUES (NULL, '{0}', '{1}', {2}, '{3}', '{4}');", cmbbxPaymentType.Text, CURRENT_DATE(), CURRENT_TIME(), txtbxPaymentAmt.Text, msktxbxStudNo.Text);

【讨论】:

    猜你喜欢
    • 2023-02-13
    • 1970-01-01
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多