Php mysql更新查询不工作?

Php mysql更新查询不工作?,php,mysql,html,Php,Mysql,Html,编辑:现在修复!谢谢你的帮助 对于初学者的问题,我很抱歉,我正在创建一个简单的页面来编辑我的团队网站的另一个页面 这是我正在使用的代码,但它不会更新数据库 错误代码: mysql_query("UPDATE pages SET `pagename` = $pagename, `pagedesc` = $pagedesc, `agekey` = $pagekey, `pagecont` = $pagecont WHERE `pages_id` = $pages_id") or die(mysql

编辑:现在修复!谢谢你的帮助

对于初学者的问题,我很抱歉,我正在创建一个简单的页面来编辑我的团队网站的另一个页面

这是我正在使用的代码,但它不会更新数据库

错误代码:

mysql_query("UPDATE pages SET `pagename` = $pagename, `pagedesc` = $pagedesc, 
`agekey` = $pagekey, `pagecont` = $pagecont WHERE `pages_id` = $pages_id") or die(mysql_error());
正确的代码:

mysql_query("UPDATE pages SET pagename = '$pagename', pagedesc = '$pagedesc', pagekey = '$pagekey', pagecont = '$pagecont' WHERE pages_id = $pages_id") or die(mysql_error());
使用``根本不起作用。但是添加或死亡(mysql_error());对我的提问有所帮助。我应该先想到的!:)

在SQL语句中有一个额外的“,”

agecont, WHERE
SQL语句中有一个额外的“,”

agecont, WHERE

将此添加到具有mysql\u查询的行:

mysql_query("<QUERY GOES HERE>") or die(mysql_error());
mysql\u查询(“”)或死亡(mysql\u错误();

这将显示查询中的确切错误。

将其添加到包含mysql\u查询的行中:

mysql_query("<QUERY GOES HERE>") or die(mysql_error());
mysql\u查询(“”)或死亡(mysql\u错误();

这将向您显示查询中的确切错误。

您的问题是没有检查您的查询是否确实成功。编辑:我想你得到了这个

SQL查询中存在一些语法错误:

mysql_query("UPDATE pages 
             SET pagename = '{$pagename}',
                 pagedesc = '{$pagedesc}',
                 agekey   = '{$pagekey}',
                 pagecont = '{$pagecont}' 
             WHERE pages_id = '{$pages_id}'") or die(mysql_error());
比如说

// Your code
UPDATE pages SET 'pagename' = $pagename

// How SQL expects
UPDATE pages SET pagename = '$pagename'
请注意,单引号仅围绕我们要输入的变量

重新编写SQL查询:

mysql_query("UPDATE pages 
             SET pagename = '{$pagename}',
                 pagedesc = '{$pagedesc}',
                 agekey   = '{$pagekey}',
                 pagecont = '{$pagecont}' 
             WHERE pages_id = '{$pages_id}'") or die(mysql_error());
请注意,列名周围没有“或”,只有用于运行更新的变量


编辑:更新答案以显示op的错误所在

您的问题是您没有检查您的查询是否实际成功。编辑:我想你得到了这个

SQL查询中存在一些语法错误:

mysql_query("UPDATE pages 
             SET pagename = '{$pagename}',
                 pagedesc = '{$pagedesc}',
                 agekey   = '{$pagekey}',
                 pagecont = '{$pagecont}' 
             WHERE pages_id = '{$pages_id}'") or die(mysql_error());
比如说

// Your code
UPDATE pages SET 'pagename' = $pagename

// How SQL expects
UPDATE pages SET pagename = '$pagename'
请注意,单引号仅围绕我们要输入的变量

重新编写SQL查询:

mysql_query("UPDATE pages 
             SET pagename = '{$pagename}',
                 pagedesc = '{$pagedesc}',
                 agekey   = '{$pagekey}',
                 pagecont = '{$pagecont}' 
             WHERE pages_id = '{$pages_id}'") or die(mysql_error());
请注意,列名周围没有“或”,只有用于运行更新的变量


编辑:更新答案以显示op的错误所在

不是您的mysql查询应该是

mysql_query("UPDATE pages SET pagename = '$pagename', pagedesc = '$pagedesc', pagekey = '$pagekey', pagecont = '$pagecont' WHERE pages_id = $pages_id");
而不是

mysql_query("UPDATE pages SET 'pagename' = $pagename, 'pagedesc' = $pagedesc, 'pagekey' = $pagekey, 'pagecont' = $pagecont, WHERE 'pages_id' = $pages_id");
您在字段名中使用了“(单引号)。当数据类型为varchar时,使用单引号

e、 如果表中的字段为myField02 varchar2(20),则在插入查询时

INSERT INTO myTable values ('myValue');
如果字段不是varchar,则不要使用单引号

INSERT INTO myTable values (myValue);

您的mysql查询不应该是

mysql_query("UPDATE pages SET pagename = '$pagename', pagedesc = '$pagedesc', pagekey = '$pagekey', pagecont = '$pagecont' WHERE pages_id = $pages_id");
而不是

mysql_query("UPDATE pages SET 'pagename' = $pagename, 'pagedesc' = $pagedesc, 'pagekey' = $pagekey, 'pagecont' = $pagecont, WHERE 'pages_id' = $pages_id");
您在字段名中使用了“(单引号)。当数据类型为varchar时,使用单引号

e、 如果表中的字段为myField02 varchar2(20),则在插入查询时

INSERT INTO myTable values ('myValue');
如果字段不是varchar,则不要使用单引号

INSERT INTO myTable values (myValue);
mysql_查询(“更新页面集
pagename
='$pagename',
pagedesc
= “$pagedesc”,
pagekey
=”$pagekey',
pagecont
=“$pagecont”其中
pages\u id
=$pages\u id”)

在字段中使用`(重音)而不是',并且在where之前有额外的(逗号)

mysql_查询(“更新页面集
pagename
='$pagename',
pagedesc
= “$pagedesc”,
pagekey
=”$pagekey',
pagecont
=“$pagecont”其中
pages\u id
=$pages\u id”)


在字段中使用“(重音)而不是”,并且在where之前有额外的(逗号)

查询中有两个错误,一个是where之前的
逗号,另一个是对字段名使用了
单引号。对fieldname使用反引号而不是单引号。使用此查询。还要注意sql注入。使用mysql\u real\u escape\u string()。


查询中有两个错误,一个是where之前的
逗号,另一个是字段名使用了
单引号。对fieldname使用反引号而不是单引号。使用此查询。还要注意sql注入。使用mysql\u real\u escape\u string()。


额外“,”在update语句中,应该在字段名周围使用“而不是”,并且应该引用字符串字段数据。另外,请确保防止SQL注入。()对这个问题做些研究,并学会如何预防。这个方法有太多的错误,不知道从哪里开始。查询已中断(只需回显它,您就会看到)。你没有使用PDO。你根本就没有预防注射。为什么要“下一步试试”?先学坏东西,然后再忘记它们是没有意义的。嗨@dhirajbodichera-我在WHERE之前删除了,但仍然不起作用:/抱歉,伙计们,我正在努力学习。请不要解雇我。我知道这段代码还远远不够完美,但我正在尝试:(extra),,”在更新语句中,您应该在字段名周围使用“而不是”,并且您应该引用字符串字段数据。此外,请确保防止SQL注入。()对该主题进行一些研究,并了解如何防止它。该方法有太多错误,无法知道从何处开始。查询已中断(只需回显它,您就会看到)。您没有使用PDO。您根本没有防止注射。为什么“下一步尝试”呢?先学习不好的东西,然后再忘记它们是没有意义的。嗨@Dhirajbodichera-我在WHERE之前删除了,但它仍然不起作用:/抱歉,伙计们,我正在努力学习。请不要激怒我。我知道这个代码远非完美,但我正在尝试:(同意。如果@GT22想要添加周围的字符(不需要,除非它们是保留字)使用反勾(`),而不是单引号(`)在字段名中使用反勾号是不可计算的,比如OP have as single quote。但是如果字段类型为varchar,OP在分配数据时必须使用单引号。比@FahimParkar更正确的是,反勾号不起作用,但“起作用了。再次感谢您的帮助!”:)同意。如果@GT22想要添加周围的字符(不需要,除非它们是保留字)使用反勾号(`),而不是单引号(')使用反勾号在字段名中是不可计算的,例如OP作为单引号。但是如果字段类型为varchar,OP在分配数据时将不得不使用单引号。Than@FahimParkar-您是正确的,反勾号不起作用,但“d”