php
  • mysql
  • insert
  • 2016-01-28 145 views 2 likes 
    2

    我有一个查询不插入如果我使用where子句,没有插入数据的where子句。这是奇怪的,我从来没有见过它发生在WAMP之前php mysql插入查询有问题

    $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']它返回有效的结果

    +2

    我认为你需要'更新'查询而不是'插入'! – Saty

    +0

    你不能'插入'现有的行('WHERE'试图选择一个现有的行) –

    +0

    谢谢saty和ubercoder。我甚至不知道我是如何忘记这一点的。我需要使用更新来更新现有的行,而不是.. urrgghhhh整天在这段简单的代码| – ABI

    回答

    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']) . "')"; 
    
    +0

    也就是说,应该注意的是,mysql_functions已被弃用,并且在PHP7中删除 - 您应该切换到mysqli_或PDO –

    +0

    Franz,感谢您的更新。我真的很笨。我需要上面提到的saty提供的更新查询,也需要你插入和不去的地方。我有一个问题,我的代码会停止如果PHP更新到7? – ABI

    +1

    所有mysql_函数都在PHP7中删除,所以:是的。但是mysqli_提供了mysql_所做的一切以及更多,而PDO提供了一个非常强大的抽象层,您可以使用它为mysql,pgsql,mssql,CSV文件以及许多其他应用程序使用相同的函数。 –

    1

    Insert只用于创造新的记录,并where子句仅使用,如果想设置它是用来与像selectupdatedelete任何条件。

    试试这个它会帮助: -

    $key1="update login set key_id ='$key' WHERE 
          (email_id = '" . mysql_real_escape_string($_POST['email_id']) . "')"; 
    
    +3

    猜你忘了用INSERT替换UPDATE? [评论回复后被删除] –

    +0

    @FranzGleichmann yeh thanx – Divakarcool

    0

    我知道@弗朗兹 - Gleichmann已经是很好的解释,什么是错在你的代码。

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

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

    现在我增加了两个点:

    • 请使用mysqli_*PDO,因为mysql_*已被弃用,在无法使用PHP 7.
    • 您错过了同一行上的终止分号,我希望这是错字错误。
    相关问题