2012-07-05 84 views
1

格式此查询确定,在调试时我看到价值更新,但只有告诉我这个消息{"Invalid column name 'Mohannad' "},请帮我家伙无效列名“*******”

UPDATE Employee 
SET Name =Mohannad 
, Age=22 
, GenderID =1 
, CountryID=1 
, Mobile=8765 
FROM Employee 
    INNER JOIN Country ON Employee.CountryID = Country.CountryID 
    INNER JOIN Gender ON Employee.GenderID = Gender.GenderID 
WHERE EmployeeID=1 ; 

SELECT Employee.EmployeeID, Employee.Name, Employee.Age, Employee.GenderID, Gender.GenderName, Employee.CountryID, Country.CountryName, Employee.Mobile 
FROM Employee 
    INNER JOIN Country ON Employee.CountryID = Country.CountryID 
    INNER JOIN Gender ON Employee.GenderID = Gender.GenderID 
+1

顺便问一下试试 - 你是如何产生这个命令?如果你使用了带参数的命令,你可以避免这种混乱,并且有更安全的代码:http://en.wikipedia.org/wiki/SQL_injection – Kobi 2012-07-05 19:41:20

回答

3

你需要Mohannad周围的报价:

SET Name='Mohannad' 

如果没有引号,数据库引擎会推测它是列的名称。

如果您在程序中生成此查询,则应该使用预准备语句,而不是仅在名称周围加引号以避免错误和注入。

+3

SQL像这样的字符串呢? – leppie 2012-07-05 19:42:41

0

Monhannad应该是在引号

UPDATE Employee 
SET Name = 'Mohannad', Age=22, GenderID =1, CountryID=1, Mobile=8765 
FROM Employee 
    INNER JOIN Country ON Employee.CountryID = Country.CountryID 
    INNER JOIN Gender ON Employee.GenderID = Gender.GenderID 
WHERE EmployeeID=1 ; 
3

与此代码

SET Name='Mohannad' 
+2

+1表示正确的引用字符。 – Ishmael 2012-07-05 19:42:43

+0

谢谢你的工作:-) – 2012-07-09 06:43:25

+0

只将值放在你的值附近并不能逃脱它,并且让你的数据库保持开放状态。这是做错的方法。 – Walf 2012-07-25 01:54:01