无法在Php中更新MySQL

无法在Php中更新MySQL,php,html,mysql,Php,Html,Mysql,我对PHP和MYSQL有问题。 我正在尝试使用以下代码更新一行: $name=$_POST['Name']; $name=mysql_real_escape_string( $name); $target = 'photo/'.$_FILES['file']['name']; $target=mysql_real_escape_string($target); $nick=$_POST['nick']; $nick=mysql_real_escape_string($nick); mysql_q

我对PHP和MYSQL有问题。 我正在尝试使用以下代码更新一行:

$name=$_POST['Name'];
$name=mysql_real_escape_string( $name);
$target = 'photo/'.$_FILES['file']['name'];
$target=mysql_real_escape_string($target);
$nick=$_POST['nick'];
$nick=mysql_real_escape_string($nick);
mysql_query("UPDATE Users SET Name='$name', Image='$target' WHERE Nickname='$nick' ;")or die(mysql_error()); 
现在,我可以编辑名称,但我不能编辑图像!!真奇怪! Html是正确的

__更新

我使用mysql\u real\u escape\u字符串来表示它们。 我检查了列名

__更新


我更新了代码,它没有返回任何mysql_错误

如上所述,mysql_*在PHP版本5.5.0中是不推荐的…但是如果您已经使用它构建了一些项目,那么您可以继续使用它,但是您不应该将用户发布的值直接发送到数据库中。先逃离他们

$name = mysql_real_escape_string( $_POST['Name'] );
$surname= mysql_real_escape_string( $_POST['Surname'] );

我认为您可能需要使用以下语法:

$_FILES['userfile']['name']
不是

获取客户端计算机上文件的原始名称。 看

编辑 如果您在变量中看到值,但sql没有按照您认为应该的方式工作,那么您需要对其进行调试

稍微更改代码,以便:

$update_sql = "UPDATE Users SET Name='$name', Image='$target' WHERE Nickname='$nick' ;");
die($update_sql);
mysql_query($update_sql) or die(mysql_error());

并检查$update\u sql中的内容,将其添加到您的问题中会很有用。如果有问题,请修复并再次测试。一旦你感到满意,就把这句话注释掉。

也许姓里有撇号!Bobby Tables突然想到这里1美元nick似乎不存在。2您很容易受到最简单的注入攻击3 mysql_*已被弃用,请使用PDO或mysqli_*代替。您在哪里学过这样编写mysql代码?这一点都不是好主意。mysql_查询是一个过时的接口,不应在新的应用程序中使用,并将在未来的PHP版本中删除。一个现代的替代品。如果您是PHP新手,可以使用类似的指南来帮助您解释最佳实践。如果我得到一条无法执行的SQL语句,我会将其返回并查看它创建了什么。然后试着直接在服务器控制台上运行它。OP已经说过我使用mysql\u real\u escape\u字符串来处理所有的问题,看起来他在我打字的时候编辑了他的文章。没问题:@Philipp为什么会丢失这个?除了准备好的语句外,我还使用一个外部脚本来清理所有用户输入get和post。这只是相关代码。不,目标值返回正确,问题在于查询
$update_sql = "UPDATE Users SET Name='$name', Image='$target' WHERE Nickname='$nick' ;");
die($update_sql);
mysql_query($update_sql) or die(mysql_error());