mysql
  • insert
  • 2011-11-30 103 views 0 likes 
    0

    你好,我昨天在這裏與這個問題,我真的不知道如何使用這個網站,因爲我是新的,所以我轉發。但我得到這個代碼塊的錯誤,我認爲它的更新查詢包含語法錯誤。更新否則插入MySQL查詢

    //更新,如果玩家的記錄已經存在

    $result = mysql_query("UPDATE PlayerStat SET Position='$POS', Number='$NUM', Name='$PlyrName', Status='$Status', TDS='$TDS', INT='$INT', YDS='$YDS', RTG='$RTG', Team='$Team' WHERE Name='$PlyrName'"); 
        echo mysql_error(); 
        if (mysql_affected_rows()==0){ 
         // Populates table if record is non existent 
         $result = mysql_query("INSERT INTO PlayerStat(`Position`, `Number`, `Name`, `Status`, `TDS`, `INT`, `YDS`, `RTG`, `Team`) VALUES ('$POS','$NUM','$PlyrName','$Status','$TDS','$INT','$YDS','$RTG','$Team')"); 
         echo mysql_error(); 
        } 
    

    錯誤消息

    您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以在'INT ='1',YDS = '86',RTG = '52.5',Team ='ARI'WHERE Name''Bartel,Richard''附近使用正確的語法在行1

    回答

    2

    INT是一個關鍵字在mysql(聲明和整數),如果它是你的列名稱,你應該圍繞反引號(`)像這樣:`INT`。

    這是把這些在即使他們沒有必要在所有情況下

    UPDATE 
        PlayerStat 
    SET 
        `Position` = '$POS', 
        `Number` = '$NUM', 
        `Name` = '$PlyrName', 
        `Status` = '$Status', 
        `TDS` = '$TDS', 
        `INT` = '$INT', 
        `YDS` = '$YDS', 
        `RTG` = '$RTG', 
        `Team` = '$Team' 
    WHERE 
        `Name` = '$PlyrName' 
    
    +0

    嘿,那肯定有幫助。但它不會更新數據庫中的舊記錄,而只是重新制作它們:( –

    +0

    您的方法會插入而不是更新?如果情況如此,您可能會遇到更多邏輯問題,或者您沒有設置數據就像你認爲你在你的數據庫中做的那樣,我會首先嚐試在你的dbs UI(PHPMyAdmin或其他)中執行它,然後看看你得到了什麼結果,更好的辦法是把它轉換成一個SELECT語句並在那裏執行它。 – Godwin

    0

    您可能需要檢查這些網站的良好實踐。 http://www.w3schools.com/php/php_mysql_update.asp http://www.tizag.com/mysqlTutorial/mysqlupdate.php

    而且你還可能要檢查你的拼寫錯誤或單引號或雙引號。除此之外,請檢查您的數據庫名稱和數據類型。

    1

    兩件事情:

    1. 檢查手冊INSERT ... ON DUPLICATE KEY UPDATE應在一個聲明中做到這一點。

    2. 我建議你仔細看看mysql_real_escape_string()或類似的PHP來逃避你的數據並防止SQL注入。

    如果你不知道什麼是SQL注射,然後谷歌,並花一點時間閱讀現在是太晚了,一些餅乾或腳本吉蒂您的數據庫之前。

    希望這會有所幫助!

    相關問題