2013-09-22 19 views
1
<?php 
$con=mysqli_connect("localhost","root","","clarks"); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$place = $_GET['place']; 
$place2 = $_GET['place2']; 
$return = $_GET['return']; 
$people = $_GET['people']; 
$pickup = $_GET['pickup']; 
$dropoff = $_GET['dropoff']; 

$result = mysqli_query($con,"SELECT * FROM pricelist WHERE place1='$place' AND place2='$place2' AND people='$people'"); 

while($row = mysqli_fetch_array($result)) 
{ 
if (!empty($row['Price'])) 
{ 
echo "Not Applicable"; 
} 
else 
{ 
    echo "<html><body style='background-color: #31ff01;'><link rel='stylesheet' href='css/bootstrap.min.css'>"; 
    echo "<div id='prices'>£"; 
    echo $row['Price'] * $return + $pickup + $dropoff; 
    echo "</div>"; 
    echo "<div id='back'>"; 
    echo "<a href='index.html'>Go Back</a>"; 
    echo "</div>"; 
    echo "<br>"; 
    } 
} 
mysqli_close($con); 
?> 

這是從每次如果參數中返回的「不適用」。新增的if else參數和輸變電從數據庫

我試着以不同的順序放置行,並使用價格和結果變量,它仍然只返回不適用,但沒有如果其他參數,其餘部分按預期工作,並提出了一個價格,所以我知道價格變量不應該是空的,也不應該是結果變量。

有了它返回並不適用所有的時間,我認爲它不是從數據庫中檢索信息的任何適當的多,但我想不出爲什麼當它完美罰款沒有的if else。

任何幫助將是巨大的,謝謝。

+1

準備SQL注入攻擊! –

+0

錯誤條件哥哥.. – zzlalani

回答

3

你的邏輯是錯的:

if (!empty($row['Price'])) 
    ^here 
{ 
echo "Not Applicable"; 
} 

應該是:

if (empty($row['Price'])) 
{ 
echo "Not Applicable"; 
} 

你也有一個嚴重的SQL注入的問題,您應該使用準備好的陳述或者至少是使用mysqli的逃逸功能。

+0

謝謝,這讓價格上漲了,但如果我輸入兩個地方沒有相應的數據庫行,我只是得到一個空白頁背面,而不是「不適用」,我想露面。此外,我會看到後來的SQL注入的東西,因爲我是相當新的編碼,所以只是想讓它首先工作,謝謝你的建議,但至少我知道現在要搜索什麼:) – Steven

+0

@Steven你是已經在'while'循環中並檢查發現行中的空字段。要檢查是否有任何行,您應該計算'while'循環外的行數,例如:http://www.php.net/manual/en/mysqli-stmt.num-rows。 php – jeroen

0
if (empty($row['Price'])) 
{ 
echo "Not Applicable"; 
} 
else 
{ 
    echo "<html><body style='background-color: #31ff01;'><link rel='stylesheet' 
..... 
    } 
} 

我認爲在if條件的否定導致問題 刪除感嘆號!

+0

做到這一點,正如我上面評論的那樣,當價格與數據庫中的位置相對應時,我立即得到價格備份,但是當我輸入沒有相應數據庫行的值時,我得到一個空白頁而不是「不適用」我想顯示。 – Steven

0
<?php 
$con=mysqli_connect("localhost","root","","clarks"); 

// Check connection 
if (mysqli_connect_errno($con)) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

$place = $_GET['place']; 
$place2 = $_GET['place2']; 
$return = $_GET['return']; 
$people = $_GET['people']; 
$pickup = $_GET['pickup']; 
$dropoff = $_GET['dropoff']; 

$result = mysqli_query($con,"SELECT * FROM pricelist WHERE place1='$place' AND place2='$place2' AND people='$people'"); 
$row = (mysqli_fetch_array($result)); 
$a = $row[3]; 

if (empty($a)) 
{ 
    echo "<html><body style='background-color: #31ff01;'><link rel='stylesheet' href='css/bootstrap.min.css'>"; 
    echo "<div id='prices'>"; 
    echo "N/A"; 
    echo "</div>"; 
    echo "<div id='back'>"; 
    echo "<a href='index.html'>Go Back</a>"; 
    echo "</div>"; 
    echo "<br>"; 
} 
else 
{ 
    echo "<html><body style='background-color: #31ff01;'><link rel='stylesheet' href='css/bootstrap.min.css'>"; 
    echo "<div id='prices'>£"; 
    echo $a * $return + $pickup + $dropoff; 
    echo "</div>"; 
    echo "<div id='back'>"; 
    echo "<a href='index.html'>Go Back</a>"; 
    echo "</div>"; 
    echo "<br>"; 
    } 
mysqli_close($con); 
?> 

好吧,我發現這個解決辦法,而不是使用我剛剛擺脫它,並分配從數據庫的價格爲自己的變量的含義有與如果其他聲明沒有衝突。工程就像一個魅力...現在來看看準備的語句:S