php
  • mysql
  • insert
  • 2016-01-28 140 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.
    • 您錯過了同一行上的終止分號,我希望這是錯字錯誤。
    相關問題