2012-08-27 32 views
-2

我駕駛自己瘋狂試圖找出我在哪裏搞亂了我的語法錯誤。我已經完成了這個程序100多次,我仍然不知道爲什麼它沒有運行。被調用的數據庫中的所有區域都不是空白的,並且所有變量都從前一頁中正確導入。凡在這個php程序

$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"; 
?>` 

非常感謝。亨利

+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,沒有比較的。您需要使用===

+1

'if:... else:...'是有效的,但它需要一個'endif;'。 –

+0

if($ pastmiles = Null)有效,但它是一個賦值,而不是IF。 – LSerni

+0

@Kolink:謝謝。編輯。 –

2

一個錯誤,我可以看到的是你周圍的表名在這裏引號的使用:

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

它應該是:

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

也可能有其他的錯誤。

你的代碼是一個完整的一塌糊塗,說好聽。您應該以小部分構建您的應用程序,一次只寫幾行,然後測試那些少數行按預期工作。一個有經驗的程序員不會在沒有測試任何代碼的情況下編寫大塊代碼,然後期望它能夠在第一次嘗試時運行。

+0

您錯過了其他人指出的實際上是一項任務的比較,但否則會在您的最後一段使用+1。 – Mahn

0

你有(至少)一個錯誤的位置:

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

的IF的主體是一個分配,不進行檢查。它始終將$pastmiles設置爲NULL,即使它開始時不是NULL。

你應該寫:

if (NULL == $pastmiles) 
    ... 

的==使它成爲一個平等的檢查,並把NULL第一,將保證如果再次忘記=,PHP將拋出一個錯誤,而不是去像什麼都沒發生。

+0

尤達條件! – Mahn

+0

每路錯誤的概率都要選擇你。但這實際上是史蒂夫馬奎爾的「編寫固體代碼」的暗示。 – LSerni