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

时间:2012-08-27 22:03:26

标签: php mysql syntax-error

我正在疯狂地试图找出我弄乱的地方。我已经完成了这个程序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";
?>`

提前非常感谢。亨利

3 个答案:

答案 0 :(得分:2)

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

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

应该是:

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

但可能还有其他错误。

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

答案 1 :(得分: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,而不是比较它。您需要使用==而不是=

答案 2 :(得分:0)

这里至少有一个错误:

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

IF的正文是作业,而非支票。它总是将$pastmiles设置为NULL,即使它开始时不是NULL。

你应该写:

if (NULL == $pastmiles)
    ...

==使它成为一个等式检查,并且首先放置NULL,将确保如果再次忘记a =,PHP将抛出错误而不是继续发生任何事情。