2012-10-12 120 views
0

我是非常新的php和mysql,我試圖添加一個產品到購物車。我認爲我的代碼工作正常,除了「quantitat + 1」部分。 (如果我只是用一個數字代替它)我不知道我應該怎麼說我想更新並添加1現有數量無論它是什麼。加入購物車

我得到沒有錯誤,所以我不知道是什麼問題。 我試過($ row ['quantitat'];)+ 1,它不起作用

我是一個絕對的初學者,所以我想我犯了一個非常明顯的錯誤,或者我有一些東西不明白。

if(isset($_GET["id"])) { 
    $result = mysql_query("SELECT * FROM carret 
          WHERE producte='".$_GET["id"]."'"); 
    } 

if (mysql_num_rows($result)>0) { // if already there is one or more 
    mysql_query("UPDATE carret SET quantitat = quantitat + 1 
    WHERE producte='".$_GET["id"]."'"); 
    echo "UPDATE. I have added 1"; 
}else{ 
    mysql_query("INSERT INTO carret (producte, quantitat) 
    VALUES (".$_GET["id"].",1)"); 
    echo "INSERT. I have inserted one new product"; 
    } 
+0

你的腳本是容易受到SQL注入 – Baba

+4

@Baba:這是人誰說,他們是一個令人難以置信的幫助的註釋「*非常新的PHP和MySQL *」 ! Narcis,巴巴的意思是說,你應該閱讀[Bobby Tables](http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain)的故事,以瞭解你寫過你的代碼的方式。您應該使用[準備語句](http://stackoverflow.com/a/60496/623041),將您的變量作爲參數傳遞給其中,而這些參數不針對SQL進行評估。 – eggyal

回答

0

你可以試試下面的

$mysqli = new Mysqli("localhost", "username", "password", "database"); 

if (isset($_GET["id"])) { 
    $id = $mysqli->real_escape_string($_GET["id"]); 
    $mysqli->query("INSERT INTO carret (producte, quantitat)VALUES ('$id',1) ON DUPLICATE KEY UPDATE quantitat = quantitat+1; "); 
} 
+0

這會創建一個新行。它不承認重複。我不知道我是否做錯了什麼? – Nrc

+0

@narcis你需要將'producte'設置爲'主ID' – Baba

+0

對不起,我不知道該怎麼做。我很困惑。我認爲主鍵是ID?我正在尋找文檔,我發現每個表中應該只有一個主鍵? – Nrc