PHP脚本(mysqli)不回应什么?

时间:2016-12-08 13:29:07

标签: php mysql mysqli

为什么这段代码什么都不做?他没有回应结果...... 此脚本的目标是回显列的平均值(小数点后两位)。

<?php
if (isset($_GET["age"]));
$age = ($_GET["age"]);
include($_SERVER["DOCUMENT_ROOT"] . "/3/includes/config.php");

$con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT AVG(price) FROM data WHERE age= '$age'") or die("Error: " . mysqli_error($con));

while($row = mysqli_fetch_array($result));
echo $row['price'];

die();

?>

3 个答案:

答案 0 :(得分:4)

您已经在循环之后有效地放置了echo语句:

while($row = mysqli_fetch_array($result));
                                         ^ this is the problem
echo $row['price'];

...与:

相同
while($row = mysqli_fetch_array($result)) {}
echo $row['price'];

在循环$row之后将false,因此不会回显任何内容。

你想:

while($row = mysqli_fetch_array($result))
    echo $row['price'];

或(更好,因为它会避免这些错误...):

while($row = mysqli_fetch_array($result)) {
    echo $row['price'];
}

您应该使用预准备语句来避免现在的SQL注入问题。

答案 1 :(得分:1)

在这里检查你的while循环是错误的

while($row = mysqli_fetch_array($result)){
    echo $row['price'];
}

应该是

var urls = document.getElementsByClassName('name')
var txt = ""
for (i = 0; i < urls.length; i++) {
  txt += "wget " + urls[i].href +"\n"
}
alert(txt)

答案 2 :(得分:1)

检查你的第一个条件语句和你的while循环。我已经重构了您的代码并包含解释修复的注释。希望这能帮到你!

<?php
//Add braces to your conditional here encapsulating the block of code you want to run if the condion is true. Your code is dependent on $_GET['age'], so you don't want to run it if you don't have that data.
if (isset($_GET["age"])) {
    $age = ($_GET["age"]);

    include($_SERVER["DOCUMENT_ROOT"] . "/3/includes/config.php");

    $con=mysqli_connect($dbhost,$dbuser,$dbpass,$dbname);

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

    $result = mysqli_query($con,"SELECT AVG(price) FROM data WHERE age= '$age'") or die("Error: " . mysqli_error($con));

//You also need to make sure that you are encapsulating the proper code in your while loop, as well.

   while($row = mysqli_fetch_array($result)) {
       echo $row['price'];
   } //close while loop

   die();
} //close if statement ?>

正如上面提到的@jeroen所说,你应该使用预处理语句,我还建议使用面向对象的mysqli和程序。 http://php.net/manual/en/mysqli.quickstart.prepared-statements.php