2012-11-30 57 views
-2
<?php 

if (isset($_GET['firstname'])){ 
    $fname = $_GET['firstname']; 
} 

mysql_query("UPDATE student SET firstname = $fname WHERE studentID = $id"); 

?> 

我有一个将更新我的数据库的窗体。在表单底部有一个更新按钮。当我使用此代码时,它不起作用。使用PHP更新数据库

我可以把在那里说:$ FNAME在我的mysql_query一个“汤姆,它会更新。

我还可以呼应了$ FNAME变量,它会响应一下什么是形式正确。 。

但我不能得到数据库采取$ FNAME

任何建议将是巨大的,感谢

+1

您是否在更新数据库之前在页面上的任意位置设置$ id? – sbeliv01

+0

不要使用'mysql_ *',因为它已被弃用。使用准备好的查询将数据从查询中分离出来。就像现在这样,如果你还没有,你就会**开放**到SQL注入和**将被黑客攻击**。考虑使用PDO或类似方法准备的查询。最后,请勿使用GET动词做更新。任何爬虫都会触发这个并更新你的数据库。至少使用POST。 – Brad

+0

相关:http://thedailywtf.com/Articles/The_Spider_of_Doom.aspx –

回答

1

你缺少单引号括起来$fname$id(如果它是一个字符串),

mysql_query("UPDATE student SET firstname = '$fname' WHERE studentID = '$id'"); 

注: Mysql_ *扩展已被弃用,并且是开放的SQL注入。所以,避免使用它们。改用PDO或Mysqli_ *。

+0

我之前在那里有'$ fname',当我发布时忘了将它放回去,但即使我这样做,它也不起作用。 –

+0

另外,围绕'$ id',如果它是一个字符串。 –

2

你忘了周围的名称引号:

mysql_query("UPDATE student SET firstname = '$fname' WHERE studentID = $id"); 

顺便说一下,你的代码是SQL注入的动力。请解决这个问题。见best-way-to-prevent-sql-injection-in-php

+0

我之前在那里有'$ fname',忘了在发布时忘了放回去,但是即使我这样做也行不通。我将不得不考虑注入,我用PHP和MYSQL进行了4个月的编码。 –

+0

@ user1770189:SQL注入预防是ANY语言中第0天的事情。这不是你稍后离开的东西。 –

+0

尝试使用PDO或MSQLI。那么问题也可能解决。 –