我使用这个查询将数据提交到数据库中:
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'";id将通过url EX localhost/index.php?id=123获得。
$id=$_GET['id']查询将无法正常工作;数据将不会更新。如果我写道:
$sql = "UPDATE table SET user='$user', name='$name' where id ='123'";它工作得很好。
如果我回显ID,它将显示正确的结果,123。
问题出在哪里?
发布于 2011-11-30 00:15:22
以获取错误消息和错误查询的方式运行所有查询。
所以,至少这样
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'";
$res = mysql_query($sql) or trigger_error(mysql_error()." in ".$sql);它会告诉你问题出在哪里。
它比在这里提问更方便,更精确,更快。
发布于 2011-11-29 23:23:26
我猜你的问题是由于未转义的数据插值导致的SQL格式错误- SQL注入漏洞。
您实际生成的查询是什么样子的?不是创建sql的代码(上面有),而是变量插入后的实际SQL ?
我猜它应该是这样的:
UPDATE table SET user='fred', name='O'Brien' where id='123';
^--unescaped quote导致语法错误。
如果您像这样运行查询:
$result = mysql_query($sql);然后将其更改为
$result = mysql_query($sql) or die(mysql_error());因此,如果查询由于任何原因而失败,您将立即获得反馈。
然后阅读有关SQL injection漏洞的内容
发布于 2020-07-23 08:10:08
$id = $_GET['id']
<form action="#.php" method="POST">
<input type="hidden" name="id" value="<?php echo $id?>">
</form>然后,在PHP代码块中,
$id = $_POST['id'];
$sql = "UPDATE table SET user='$user', name='$name' where id ='$id'"https://stackoverflow.com/questions/8313213
复制相似问题