添加了 if else 参数并从数据库中丢失变量


Added if else argument and lost variable from database

<?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 的情况下它工作得很好。

任何帮助都会很棒,谢谢。

你的逻辑是错误的:

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

应该是:

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

你还有一个严重的sql注入问题,你应该使用预准备语句,或者至少使用mysqli的转义函数。

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

我认为在 if 条件下否定会导致问题去掉感叹号!

可能是因为您使用的是mysqli_fetch_array而不是mysqli_fetch_assoc。 http://www.php.net/manual/en/mysqli-result.fetch-assoc.php

您还应该开始在参数上使用real_ escape_字符串,或者使用参数化预准备语句以正确的方式执行此操作。 http://www.php.net/manual/en/mysqli.prepare.php

<?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);
?>
好吧,我

找到了这种解决方法,而不是在我刚刚摆脱它并将数据库中的价格分配给它自己的变量时使用,这意味着与 if else 语句没有冲突。像魅力一样工作...现在看看准备好的语句:S