如何从结构成员传递MySQL中的VALUES

时间:2013-04-21 16:33:30

标签: mysql

我想将结构成员的值写入 MySQL 表。我遇到的问题是我希望读取结构的值并将值写入特定列。

string assetNumber = EGMSimulatorObj.EGMConfigurationObj.AssetNumber.ToString();
string query = "INSERT INTO egmtable (Asset_Number) VALUES($assetNumber)";

有了上述内容,我收到以下错误:

Unknown column '$assetNumber' in 'field list'.

如何使用结构成员或任何局部变量中的set VALUES?

2 个答案:

答案 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作为编程语言。其他语言可能需要其他连接符号。

旁注:您应该为此使用预准备语句,原因有两个:安全性和执行速度。