2013-06-26 122 views
-1

当我查询不工作,我有这样一个形式如下:更新数据库

<form action="campionat.php?competitii='.$idcompetitie.'"> 
    <input type="submit" name="upgrade" value="inainte" /> 
</form> 

campionat.php

if($_POST['upgrade']=="inainte") 
    {  
     $lvlupstadion = $levelstadio+1; 
     $cost    = 10000000*$lvlupstadion; 
     $bugetnou  = $buget - $cost; 

     $q = mysql_query("UPDATE echipa SET levelstadion='".$lvlupstadion."' , buget='".$bugetnou."' WHERE (`echipa`='".$echipa."') AND (`user`='".$id."') AND (`competitie`='".$competitie."')") ; 
     if (!$q) 
     { 
      echo mysql_error($q); 
     } 
     echo $lvlupstadion.$bugetnou.$echipa.$id.$competitie; 
    } 

为什么我的数据库不会改变,我的脚本不警告我关于错误?

+0

因为您的$ _POST ['upgrade']没有从窗体动作 – Afsar

+0

中获取值,所以添加像这样的'mysql_query()或die(mysql_error())'来跟踪错误。 – ejo

+2

mysql_ *被删除,使用mysqli或PDO。 – karmafunk

回答

0

如果

(`user`='".$id."') 

是一个ID(INT)你不需要简单的报价。它可以帮助你

+1

-1将不会有任何区别(请不要提交猜测作为答案) – AD7six

+0

@ AD7ixix建议将足够好,并有一个答案要么编辑它或发布它... –

+0

当张贴它,还没有anwser,所以请停止拖动。我只是试图帮助,而你只是无缘我。 – marshallino16

0

存储该值的隐藏字段,然后将其发送到另一个页面

<form action="campionat.php" method="post"> 
<input type="hidden" name="competitii" value="<?php echo $idcompetitie; ?>"> 
<input type="submit" name="upgrade" value="inainte" /> 
</form> 

您重定向无法发送从形式交法的价值。

+1

将id从url(表单动作)移动到隐藏字段不能解决原始错误(通过此答案更正,但未提及)。 – AD7six

2

<form>标记的默认方法是GET。

由于表单没有指定方法,它会发送get。在这种情况下,$_POST['upgrade']不可用。

如果更改

<form action="campionat.php?competitii='.$idcompetitie.'"> 
    <input type="submit" name="upgrade" value="inainte" /> 
</form> 

<form method="post" action="campionat.php?competitii='.$idcompetitie.'"> 
    <input type="submit" name="upgrade" value="inainte" /> 
</form> 

它应该工作。

请参考这个问题:What is the default form HTTP method?

1

你的形式不具有method,因此它会默认为GET。这是一个问题,因为您正尝试访问永远不会设置的$_POST['upgrade']

将方法设置为post

<form method="post" ... > 

W3C docs

方法

可能(不区分大小写)的值是 “获取”(默认)和 “后”

+0

对不起,我的错是

\t \t \t \t \t \t \t \t \t \t \t

1

您的形式缺少的东西。您必须在$ _GET和$ _POST之间进行选择。 +你在用$ q做什么?