1

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

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

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

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

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

4

2 回答 2

1

你需要更换

string query = "INSERT INTO egmtable (Asset_Number) VALUES($assetNumber)";

有类似的东西

string query = "INSERT INTO egmtable (Asset_Number) VALUES("+assetNumber+")";

也就是说,如果您使用 Java 作为编程语言。其他语言可能需要其他连接表示法。

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

于 2013-04-21T16:57:42.960 回答
1

目前 MySQL 看到 $assetNumber 并且认为它是一个列名。它没有被替换为值。您可能希望将变量连接到字符串中。我不确定您使用的是哪种语言。

PHP

$query = "INSERT INTO egmtable (Asset_Number) VALUES (".$assetNumber.")";

冷融合

qryString = "INSERT INTO egmtable (Asset_Number) VALUES ("&assetNumber&")";

爪哇

string query = "INSERT INTO egmtable (Asset_Number) VALUES("+assetNumber+")";

但是,在所有这些情况下,这很容易受到 SQL 注入的影响。相反,使用类似于cfqueryparam(CF) / mysqli->bind(PHP) 的语言会更好地为您服务,以允许语言确保值被正确转义,从而确保您的查询是安全的。因此,沿着 java 路线并使用将参数传递给 JDBC PreparedStatement作为起点

query = con.prepareStatement("INSERT INTO egmtable (Asset_Number) VALUES( ? )");
query.setString(1, assetNumber);

如果您能够指定您使用的语言,那么我可以提供更具体的答案。

于 2013-04-21T16:49:14.333 回答