这个php程序中的语法错误在哪里

这个php程序中的语法错误在哪里,php,mysql,syntax-error,Php,Mysql,Syntax Error,我想弄清楚我把事情搞砸了,这让我自己都快发疯了。这个程序我已经运行了100多次,但我仍然不明白为什么它没有运行。数据库中被调用的所有区域都不是空的,并且所有变量都是从上一页正确引入的 $host="localhost"; $username="root"; $password="sunbuggy"; $database="mpg"; $table="m"; mysql_connect($host,$username,$password) or die( "una

我想弄清楚我把事情搞砸了,这让我自己都快发疯了。这个程序我已经运行了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";
?>`

非常感谢。亨利

我一眼就能看出,如果/否则是错误的:

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,而不是比较它。您需要使用
=
而不是
=

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

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

$getlastpri= "SELECT * FROM `$table` ORDER BY `prikey` DESC";
不过,也可能有其他错误

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

您(至少)遇到了一个错误:

if($pastmiles=Null):
    {$milestravled=Null;}
else:
    $milestravled=$miles-$pastmiles;
IF的主体是赋值,而不是检查。它将始终将
$pastmiles
设置为NULL,即使开始时它不是NULL

你应该写:

if (NULL == $pastmiles)
    ...

==使它成为一个相等检查,并将NULL放在第一位,这将确保如果您再次忘记a=,PHP将抛出一个错误,而不是像什么都没有发生一样继续运行。

您收到了什么错误消息?什么不按预期工作?
如果:。。。else:…
有效,但需要一个
endif
.if($pastmiles=Null)可以工作,但这是一个赋值,而不是if;真值将取赋值的值。在这种情况下,它总是错误的。@lserni-谢谢,编辑#2 made.)正如其他人指出的那样,你错过了一个比较,这实际上是一个作业,但除此之外,你的最后一段还有+1。每一个减少错误概率的方法都必须选择你。但这实际上是Steve Maguire“编写可靠代码”的一个暗示。