-3

我把自己逼疯了,想弄清楚我在哪里搞砸了。我已经通过这个程序 100 次,我仍然无法弄清楚为什么它没有运行。正在调用的数据库中的所有区域都不是空白的,并且所有变量都是从前一页正确带入的。

$host="localhost";
    $username="root";
    $password="sunbuggy";
    $database="mpg";
    $table="m";

mysql_connect($host,$username,$password) or die( "unable to connect to mysql server");
    mysql_select_db($database) or die( "Unable to select database"); 

        $driver=$_POST['driver'];
        $shuttle=$_POST['shuttle'];
        $gas=$_POST['gas'];
        $miles=$_POST['miles'];
        $cost=$_POST['cost'];

$getlastpri= "(SELECT * FROM '$table' ORDER BY `prikey` DESC)";


$sql=mysql_query($getlastpri);
$i=0;
$num=mysql_result($prime,$i,$prikey);
$shut=NULL;
while ($shut != $shuttle){
$shut=mysql_result($sql,$i,shuttle);
    $i++;}
if($shut == $shuttle)
    {$pastmiles=mysql_result($sql,$i,miles);}
else
    $pastmiles=Null;                        


if($pastmiles=Null):
    {$milestravled=Null;}
else:
$milestravled=$miles-$pastmiles;

$milespergallon=($milestravled/$gas);



$abc= "INSERT INTO $table VALUES ('','$driver','$shuttle','$gas','$miles','$cost', '$milestravled','$milespergallon')";
mysql_query($abc);

mysql_close();
echo "Your latest information has been input into the server";
?>`

提前非常感谢。亨利

4

3 回答 3

2

我可以看到的一个错误是您在此处使用了表名周围的引号:

$getlastpri= "(SELECT * FROM '$table' ORDER BY `prikey` DESC)";

它应该是:

$getlastpri= "SELECT * FROM `$table` ORDER BY `prikey` DESC";

不过也可能有其他错误。

你的代码是一团糟,说得好听。您应该分小部分构建应用程序,一次只编写几行代码,然后测试这几行代码是否按预期工作。有经验的程序员不会在不测试任何代码的情况下编写大量代码,然后期望它在第一次尝试时就可以工作。

于 2012-08-27T22:08:14.253 回答
1

从我一眼看去,这if/else是错误的:

if($pastmiles=Null):
{$milestravled=Null;}
else:

应该

if($pastmiles == Null){
    $milestravled=Null
}

编辑:

或者正如@Kolink 在评论中指出的那样,您可以使用以下语法:

<?
if($a):
    echo $a;
    if($b) {
      echo $b;
    }
else:
    echo $c;
endif;
?>

编辑2:

正如@lserni 指出的那样,您分配的是NULL,而不是比较它。你需要使用===

于 2012-08-27T22:07:54.360 回答
0

您在这里(至少)有一个错误:

if($pastmiles=Null):
    {$milestravled=Null;}
else:
    $milestravled=$miles-$pastmiles;

IF 的主体是一个赋值,而不是一个检查。它总是设置$pastmiles为 NULL,即使它一开始不是 NULL。

你应该写:

if (NULL == $pastmiles)
    ...

== 使它成为一个相等性检查,并且首先放置 NULL,将确保如果你再次忘记一个 =,PHP 将抛出一个错误,而不是像什么都没发生一样继续。

于 2012-08-27T22:09:55.227 回答