php mysql update 语句数字正常插入,字母汉字不行

php与mysql的结合使用,对于数字的话操作完全正确,数据库中表的属性是varchar,数据库中也是set utf8了,但问题应该不是这里,不只汉字不行,英文字母也不行,只要6个列中有一行非数字的话,更新不会失败,但是会全部列都变成空,update语句如下:
$query = "update user set Firstname='".$_GET[Firstname]."',Lastname='".$_GET[Lastname]."',Age='".$_GET[Age]."',Hometown='".$_GET[Hometown]."',Job='".$_GET[Job]."' where id=$_GET[id] ";
求大大们指导!谢谢!!!

代码:
图片说明

你看你第一次进这个页面的时候,参数有没有。第二次有没有参数。绝壁是你参数值没有的缘故

如果有非数字的值的话,id正常,其他属性变空。

求大神指导吖,好怕沉了T__T

这种情况没见过,一般只有是没有值才会有空,如果你确认获取到值了,那就不知道什么原因了
这样,你输出

 $query = "update user set Firstname='".$_GET[Firstname]."',Lastname='".$_GET[Lastname]."',Age='".$_GET[Age]."',Hometown='".$_GET[Hometown]."',Job='".$_GET[Job]."' where id=$_GET[id] ";
echo $query

看看这个sql怎样的,然后放mysql里直接执行看看

建议:
1. 所有的$_GET[xxx] 都替换为$_GET['xxxx'] 也就是加上引号。
2. update那句加上:
if( isset($_GET['LastName'])){
//update
}

否者你直接访问页面的时候,由于$_GET['xxxx']都是空的, 自然数据库中就被更新为空了。

  1. 貌似你应该用$_POST而不是GET

目前的问题是第一次操作是正确了,不管是数字还是字母还是中文,都可以,但是第二次的话就会全变空值,是否跟浏览器缓存有关?只要网页关了重新上就可以正常更新数据

$query那句,所有的$_GET[xxx] 都替换为$_GET['xxx'] ,加上单引号