首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新where id=$id

更新where id=$id
EN

Stack Overflow用户
提问于 2011-11-29 23:18:37
回答 6查看 81.1K关注 0票数 4

我使用这个查询将数据提交到数据库中:

代码语言:javascript
复制
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'";

id将通过url EX localhost/index.php?id=123获得。

代码语言:javascript
复制
$id=$_GET['id']

查询将无法正常工作;数据将不会更新。如果我写道:

代码语言:javascript
复制
$sql = "UPDATE table SET user='$user', name='$name' where id ='123'";

它工作得很好。

如果我回显ID,它将显示正确的结果,123

问题出在哪里?

EN

回答 6

Stack Overflow用户

发布于 2011-11-30 00:15:22

以获取错误消息和错误查询的方式运行所有查询。

所以,至少这样

代码语言:javascript
复制
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'";
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);

它会告诉你问题出在哪里。

它比在这里提问更方便,更精确,更快。

票数 12
EN

Stack Overflow用户

发布于 2011-11-29 23:23:26

我猜你的问题是由于未转义的数据插值导致的SQL格式错误- SQL注入漏洞。

您实际生成的查询是什么样子的?不是创建sql的代码(上面有),而是变量插入后的实际SQL

我猜它应该是这样的:

代码语言:javascript
复制
UPDATE table SET user='fred', name='O'Brien' where id='123';
                                     ^--unescaped quote

导致语法错误。

如果您像这样运行查询:

代码语言:javascript
复制
$result = mysql_query($sql);

然后将其更改为

代码语言:javascript
复制
$result = mysql_query($sql) or die(mysql_error());

因此,如果查询由于任何原因而失败,您将立即获得反馈。

然后阅读有关SQL injection漏洞的内容

票数 5
EN

Stack Overflow用户

发布于 2020-07-23 08:10:08

代码语言:javascript
复制
$id = $_GET['id']

<form action="#.php" method="POST">
      <input type="hidden" name="id" value="<?php echo $id?>">
</form>

然后,在PHP代码块中,

代码语言:javascript
复制
$id = $_POST['id'];
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8313213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档