php mysql插入查询有问题

时间:2016-01-28 11:38:54

标签: php mysql insert

如果我使用where子句,没有插入数据的where子句,我有一个不插入的查询。这很奇怪,我在WAMP之前从未见过它

$key=substr(md5(rand(0, 1000000)), 0, 5);

$key1="INSERT INTO login(key_id) VALUES('$key') 
WHERE (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')"

if(mysql_query($key1))  
{
   $message = 'User Added!.';
   echo "<SCRIPT>
   alert('$message');
   location='forgotpassword.php';
   </SCRIPT>";     
}

如果我回显$_POST['email_id'],它确实会返回有效结果

3 个答案:

答案 0 :(得分:7)

INSERT和WHERE不要混用。 INSERTing时,您正在创建新记录。 WHERE用于SELECTING DELETEing或UPDATEing,当你必须指定一个过滤器,你想要SELECT,DELETE或UPDATE行。

如果要插入行,请不要使用WHERE。 如果要更改行,请使用

$key1="UPDATE login SET key_id = '$key' WHERE
 (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";

答案 1 :(得分:1)

Insert仅用于创建新记录,where子句仅在想要设置与selectupdate,{{delete $key1="update login set key_id ='$key' WHERE (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')"; 一起使用的任何条件时使用1}}。

试试这会有所帮助: -

create trigger tgTriggerName after delete
on Table1
begin
delete from Table2 where ID in (old.stringIDs);
end

答案 2 :(得分:0)

我知道@ Franz-Gleichmann已经解释得非常好,你的代码中有什么不对。

您需要使用UPDATE来更新数据修改代码:

$key1 = "UPDATE login SET key_id = '$key' WHERE
(email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')";

现在我又增加了两点:

  • 请使用mysqli_*PDO,因为mysql_*已被弃用且在PHP 7中不可用。
  • 你错过了同一行的终结半冒号,我希望这是拼写错误。