【发布时间】:2011-11-24 17:07:20
【问题描述】:
我正在运行以下 UPDATE 查询但没有成功:
$sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id'];
mysql_error();不返回错误,但我确定这是语法问题。
如果您能帮我清理这个问题并提供解释以帮助我了解哪里出错了,我们将不胜感激!
为了给出更大的参考,这里是建表代码:
$sql="CREATE TABLE users
(
id int NOT NULL auto_increment,
PRIMARY KEY(id),
firstname varchar(20),
lastname varchar(20),
email varchar(40)
)";
这是我 updater.php 中的完整代码,它在表上运行更新查询:
mysql_select_db(dustin,$con);
$sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id'];
$sherlock=mysql_query($sql,$con);
echo $sql 返回以下内容:
UPDATE users SET firstname='Mike',lastname='Wilson',email='mike@eyeball.com' WHERE id =
这是否意味着我的 id 没有被传递?
要查看它的实际效果,请转到 24.77.236.155/dustin/Assignment2/users.php 并单击编辑以使用查询。此外,24.77.236.155/dustin/Assignment2/add.htm 可用于将用户添加到表中。
【问题讨论】:
-
打印出sql,这样更容易调试。此外,您应该使用绑定变量 - 这很容易受到 SQL 注入的影响。
-
."' WHERE id = ".$_GET['id'];到."' where id='" . $GET['id] . "'"; -
你说mysql_error没有返回错误...mysql_query返回true还是false?
-
如果 id 是整数,则不需要引号
-
我知道这是题外话,我可能会对此投反对票。但@DustinJames ---将您的
$_GET变量数据直接放入查询中是其中之一如果您不验证这些值的内容,您可以对您的网站做的最危险、有害、不安全的事情---我希望您能对此做点什么.. [爆发原因] -> @987654321 @ :(