这个php程序中的语法错误在哪里
我想弄清楚我把事情搞砸了,这让我自己都快发疯了。这个程序我已经运行了100多次,但我仍然不明白为什么它没有运行。数据库中被调用的所有区域都不是空的,并且所有变量都是从上一页正确引入的这个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
$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“编写可靠代码”的一个暗示。