0
  1. 在下面的代码中回显 $AA 它可以工作!回显正确显示 $rec['totsb'] 减 1,从数据库中的现有值中减去 1。然后我需要将减一后生成的新数字保存回数据库,这是我的代码肯定是错误的。我尝试了许多替代方法来纠正它,但无法通过。有人能告诉我如何将新号码保存回数据库吗?

信息:我的数据库如下所示。正如您所见,数字填充在下拉列表中以供用户选择。(数据库仅从 302 开始,以 309 结尾,下拉列表中全部为 302,303,304...309)因此,如果用户选择 306,例如应自动识别适合的起始编号和结束编号 306 并将新编号适当地保存在 totsb 中。

+--------+---------+------+
|sbstart |sbend    | totsb|
+--------+---------+------+
|302     |309      | 8    |
|200     |208      | 9    |
|405     |409      | 5    |
+--------+---------+------+

代码:

<?php
$con=mysql_connect('localhost','root') or die ("Server connection failure!");
$db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the database");
$SQL="SELECT * FROM newchk";
$run=mysql_query($SQL,$con) or die ("SQL Error");
$nor=mysql_num_rows($run);

while ($rec = mysql_fetch_array($run))
{
for($i=$rec['sbstart']; $i<=$rec['sbend']; $i++)
    {
    $opt=$_POST['options'];
    if($i = $opt)
     {
        if($rec['totsb'] <= "0")
        {
        echo "You have already entred this cheque number."; 
        return false;
        } else {
        echo "You can proceed with this entry";
        $AA = $rec['totsb']-1;
        $BB=$rec['sbstart'];
        echo $AA;
        $con=mysql_connect('localhost','root') or die ("Server connection      failure!");
        $db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the     database");
        $SQL="UPDATE newchk SET totsb='$AA'";   
        return false;
        }
     }
     else 
     { echo "Error: Cant find choosen in the databse"; 
      return false;
     }
    }
}
?>
4

2 回答 2

1

尝试更改此行

$SQL="UPDATE newchk SET totsb='$AA'";

$SQL="UPDATE newchk SET totsb=".$AA;
于 2012-09-10T14:55:31.237 回答
0

除非您缺少代码...

1)您没有像第一个那样对 SQL 语句做任何事情(需要实际运行它)。
2)如果金额是您在表格 chema 中指示的数字,则不需要引号
3)还建议使用您的 sbstart 作为更新记录的限定符,否则您将更新所有内容。

$SQL2="UPDATE newchk SET totsb=$AA where sbstart=$BB"; 
$run2=mysql_query($SQL2,$con) or die ("SQL Error"); 

如果这没有帮助,请发送有关您的数据库架构的更多信息

添加代码

$matches=0;
$opt=$_POST['options'];
while ($rec = mysql_fetch_array($run)){
    if($opt>=$rec['sbstart'] && $opt<=$rec['sbend']){
        # we have a match, run your code

        if($rec['totsb'] <= "0") 
        { 
        echo "You have already entred this cheque number.";  
        return false; 
        } else { 
        echo "You can proceed with this entry"; 
        $AA = $rec['totsb']-1; 
        $BB=$rec['sbstart']; 
        echo $AA; 
        $con=mysql_connect('localhost','root') or die ("Server connection      failure!"); 
        $db=mysql_select_db('regional_data',$con) or die ("Couldn't connect the     database"); 
# fixed lines
        $SQL2="UPDATE newchk SET totsb=$AA where sbstart=$BB"; 
        $run2=mysql_query($SQL2,$con) or die ("SQL Error"); 
# end fixed lines
        return false; 
        } 
        # end your code
        $matches++
    }else{
        # no match
    }
} # while loop through records

if($matches==0){
    echo "Error: Cant find choosen in the databse";  
    return false; 
}else{
    return true;
}

你可以多清理一下你的代码,但这应该会让你走上正确的轨道

于 2012-09-10T14:48:48.817 回答