2012-10-12 93 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