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 引数から「該当なし」を返しています。

行を別の順序で配置し、価格変数と結果変数の両方を使用してみましたが、まだ適用できないものしか返されませんが、if else 引数がないと、残りは意図したとおりに機能し、価格が表示されるので、価格変数がわかります空であってはならず、結果変数も空であってはなりません。

常に適用できないと返されるため、データベースから情報を適切に取得していないと思いますが、if else なしで完全に正常に動作する理由がわかりません。

どんな助けでも素晴らしいでしょう、ありがとう。

4

4 に答える 4

3

あなたの論理は間違っています:

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

次のようにする必要があります。

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

また、深刻なSQLインジェクションの問題もあります。準備されたステートメントを使用するか、少なくともmysqliのエスケープ関数を使用する必要があります。

于 2013-09-22T15:06:46.660 に答える
0

mysqli_fetch_assoc の代わりに mysqli_fetch_array を使用している可能性があります。http://www.php.net/manual/en/mysqli-result.fetch-assoc.php

また、パラメーターで real_escape_string の使用を開始するか、パラメーター化された準備済みステートメントを使用して正しい方法で行う必要があります。http://www.php.net/manual/en/mysqli.prepare.php

于 2013-09-22T15:32:10.940 に答える
0
if (empty($row['Price']))
{
echo "Not Applicable";
}
else
{
  echo "<html><body style='background-color: #31ff01;'><link rel='stylesheet'  
.....
  }
 }

if条件の否定が問題を引き起こすと思います感嘆符を削除してください!

于 2013-09-22T15:07:36.680 に答える