php mysql插入查询遇到问题
我有一个查询,如果我使用where子句,它不会插入数据,如果没有where子句,它会插入数据。这很奇怪,我以前从未在WAMP见过这种情况php mysql插入查询遇到问题,php,mysql,insert,Php,Mysql,Insert,我有一个查询,如果我使用where子句,它不会插入数据,如果没有where子句,它会插入数据。这很奇怪,我以前从未在WAMP见过这种情况 $key=substr(md5(rand(010000)),0,5) $key1=“插入登录(key\u id)值(“$key”) 其中(email\u id=“.mysql\u real\u escape\u string($\u POST['email\u id'])。”)” if(mysql_查询($key1)) { $message='用户已添加!';
$key=substr(md5(rand(010000)),0,5)
$key1=“插入登录(key\u id)值(“$key”)
其中(email\u id=“.mysql\u real\u escape\u string($\u POST['email\u id'])。”)”
if(mysql_查询($key1))
{
$message='用户已添加!';
回声“
警报(“$message”);
location='forgotpassword.php';
";
}
如果我回显
$\u POST['email\u id']
它会返回有效的结果插入和不混合的位置。
插入时,您正在创建新记录。
当您必须指定要选择、删除或更新的行的筛选器时,WHERE用于选择删除或更新
如果要插入行,请不要使用WHERE。
如果要更改行,请使用
$key1="UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";
Insert
仅用于创建新记录,而where
子句仅在希望设置与之一起使用的任何条件时使用,如选择
,更新
,删除
试试这个,它会有帮助:-
$key1="update login set key_id ='$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";
我知道@Franz Gleichmann已经解释得很清楚了,你的代码有什么错 您需要使用
UPDATE
更新数据修改代码:
$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";
现在我再补充两点:
- 请使用
或mysqli_*
,因为PDO
已弃用,在PHP7中不可用mysql_*
- 你错过了同一行的分号,我希望这是打字错误
更新
查询,而不是插入
!!由于saty和ubercoder,您无法插入现有行(其中,尝试选择现有行)。我甚至不知道我怎么会忘了这个。我需要使用update来更新现有行。。Urrgghhh在这段简单的代码中度过了整整一天|也因为没有人提到它,我会的。停止使用mysql_*扩展,因为它在PHP版本5.5.0中已被弃用,并且在PHP版本7.0中已被删除。请改用或,并且您的代码可以使用准备好的语句。也就是说,应该注意,mysql_*函数已被弃用,并且在PHP7中已被删除-您应该切换到mysqli_*或PDO而不是PDEADFRANZ,感谢更新。我真的很笨。我需要上面saty提到的更新查询,也需要你的insert和where Not go。我有一个问题,如果php被更新到7,我的代码会停止编写吗?所有mysql_uu函数都会在PHP7中删除,所以:是的。但是mysqli_uuu提供了mysql_uuuu所做的一切和更多,而PDO提供了一个非常强大的抽象层,通过它,您可以对mysql、pgsql、mssql、CSV文件和许多、许多、更多的文件使用相同的函数。@ABI:如果它比mysql更有效,请接受这个答案。这将有助于其他面临同样问题的人。干得好Franz…我猜你忘了用更新替换插入?[在编辑答案后,注释已过时]
$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";