添加了if参数和数据库丢失的变量

时间:2013-09-22 15:02:40

标签: php mysql database if-statement

<?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参数返回“Not Applicable”。

我尝试以不同的顺序放置线条并使用价格和结果变量,它仍然只返回不适用但没有if else参数,其余部分按预期工作并提出价格所以我知道price变量不应为空,结果变量也不应该。

随着它的返回不再适用,我认为它不再正确地从数据库中检索信息,但我无法弄清楚为什么它在没有if的情况下完全正常工作。

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

4 个答案:

答案 0 :(得分:3)

你的逻辑错了:

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

应该是:

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分: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);
?>

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