我想将结构成员的值写入 MySQL 表。我遇到的问题是我希望读取结构的值并将值写入特定列。
string assetNumber = EGMSimulatorObj.EGMConfigurationObj.AssetNumber.ToString();
string query = "INSERT INTO egmtable (Asset_Number) VALUES($assetNumber)";
有了上述内容,我收到以下错误:
Unknown column '$assetNumber' in 'field list'.
如何使用结构成员或任何局部变量中的set VALUES?
答案 0 :(得分:1)
目前MySQL正在看$ assetNumber,因此相信它是一个列名。它没有被价值所取代。您可能希望将变量连接到字符串中。我不确定你使用的是哪种语言。
<强> PHP 强>
$query = "INSERT INTO egmtable (Asset_Number) VALUES (".$assetNumber.")";
<强> ColdFusion的强>
qryString = "INSERT INTO egmtable (Asset_Number) VALUES ("&assetNumber&")";
<强>爪哇强>
string query = "INSERT INTO egmtable (Asset_Number) VALUES("+assetNumber+")";
但在所有这些情况下,这很容易受到SQL注入的攻击。相反,您可以使用与cfqueryparam
(CF)/ mysqli->bind
(PHP)类似的方式更好地服务,以允许语言确保正确转义值,从而确保您的查询安全。所以沿着java路线走下去并使用passing parameters to a JDBC PreparedStatement作为起点
query = con.prepareStatement("INSERT INTO egmtable (Asset_Number) VALUES( ? )");
query.setString(1, assetNumber);
如果您能够指定所使用的语言,那么我可以提供更具体的答案。
答案 1 :(得分:1)
您需要替换
string query = "INSERT INTO egmtable (Asset_Number) VALUES($assetNumber)";
类似
string query = "INSERT INTO egmtable (Asset_Number) VALUES("+assetNumber+")";
也就是说,如果您使用Java作为编程语言。其他语言可能需要其他连接符号。
旁注:您应该为此使用预准备语句,原因有两个:安全性和执行速度。