Php 使用WHERE更新MySQL中的查询

Php 使用WHERE更新MySQL中的查询,php,mysql,Php,Mysql,我正在运行以下更新查询,但未成功: $sql="UPDATE users SET firstname='".$_GET['fn']."',lastname='".$_GET['ln']."',email='".$_GET['emadd']."' WHERE id = ".$_GET['id']; mysql_error();没有返回错误,但我确信这是一个语法问题 如果你能帮我整理一下,解释一下,帮助我了解哪里出了错,那将不胜感激 为了提供更大的参考点,以下是表格创建代码: $sql="CREA

我正在运行以下更新查询,但未成功:

$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)
)";
下面是my 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 = 
这是否意味着我的身份证不会被忽略


要查看它的实时运行,请转到24.77.236.155/dustin/Assignment2/users.php,然后单击edit来处理查询。另外,24.77.236.155/dustin/Assignment2/add.htm可用于将用户添加到表中。

您缺少where位中的引号

i、 e


另外,使用$GET而不检查这些值也存在安全问题。

查询似乎很好,我假设它没有更新表

调试的一种方法是在下一行中回显$sql,以查看GET变量的值以及传递到数据库的实际查询

echo $sql;

始终至少以这种方式运行所有查询

$result = mysql_query($sql,$con) or trigger_error(mysql_error(). " ".$sql); 

与这里的答案中的一些胡乱猜测不同,它将为您提供问题的准确完整的图片。

打印sql,因为它将使调试更容易。此外,您应该使用绑定变量-这容易受到SQL注入的攻击。
“'WHERE id=“.$\u GET['id'”
“'where id='”$获取['id]。"'";
你说mysql\u error不返回错误…mysql\u query是否返回true或false?如果id是整数,则不需要引号。我知道这是离题的,我可能会对此投反对票。。但是@DustinJames——如果你不验证这些值的内容,那么将你的
$\u GET
变量数据直接放入一个查询中是你可以对你的站点做的最危险、有害、不安全的事情之一——我希望你能做些什么。。[爆发原因]->:(如果id是整数,则引号不是required@julien-我假设由于它不工作,所以id不是整数。@EdHeal如果是这样,
mysql\u error()
应显示语法错误echo$sql结果如下:更新用户设置firstname='Mike',lastname='Wilson',email='1mike@eyeball.com'WHERE id=这是否意味着我的id没有被传递?@DustinJames您在浏览器中的地址字符串中看不到它吗?是的,只是一个id没有传递,创建了一个隐藏的表单元素,它工作了,t汉克斯,我会一直盯着它看,以为它是语法。我必须记住回显我的sql语句。谢谢上校,我会开始这样做的。
$result = mysql_query($sql,$con) or trigger_error(mysql_error(). " ".$sql);