PHP 单独的 if else 语句


PHP Separate If Else Statement

<?php
    extract( $_GET );       
    $sql = "SELECT * FROM tablename order by Name DESC";
    $sql = "SELECT * FROM tablename where age = "31";
    $db = mysql_connect("localhost","root","password"); 
    if (!$db) {
    die("");
    }
    $db_select = mysql_select_db('databasename',$db);
    if (!$db_select) {
    die("");
    }
    if ( !( $result = mysql_query( $sql, $db ) ) ) {
    print( "Could not execute query! <br />" );
    die( mysql_error() . "</body></html>" );
    } // end if
    echo "<table>
    <tr>
    <th>Name</th>
    <th>Age</th>
    </tr>";
    while($row = mysql_fetch_array($result)){
        echo "<tr>";
        echo "<td>".$row['Name']."</td>";
        echo "<td>".$row['Age']."</td>";
    }
    echo "</table>";
    mysql_close( $db );
?>

我应该在哪里为名称和年龄添加 if else 语句,以便在选择名称或年龄时运行 sql 语句?姓名和年龄来自不同的列,但在同一表中

if(isset($_GET['age'])) {
    $sql = 'SELECT * FROM tablename where age = ' . $_GET['age'];
} else if(isset($_GET['name'])) {
    $sql = 'SELECT * FROM tablename order by Name DESC';
}

然后,您可以将其用于以下网址:

  • www.example.com?age=31
  • www.example.com?name

请注意,这是一个非常简单的示例,您还需要验证输入。

编辑:您不应该使用mysql*(已弃用的(函数,而应使用mysqli*或PDO。有关 mysql* 函数的更多信息,请阅读有关此问题的答案。

看起来您需要检查 $_GET 的密钥。

试试这个:

if (isset($_GET['Name']) && !empty($_GET['Name'])) {
     $sql = "SELECT * FROM tablename order by Name DESC";
} else if (isset($_GET['Age']) && !empty($_GET['Age'])) {
      $sql = "SELECT * FROM tablename where age = '".$_GET['Age']."'";
}

希望这有帮助。

<?php
    error_reporting(-1);
    $db = mysqli_connect("localhost","root","password","databasename"); 
    if (!$db) { 
        die( mysql_error() . "</body></html>" );
    }
    if(isset($_GET['age'])) {
        // You can use the $_GET['age'] variable in the query if you want to, this makes you vulnerable to sql injection though. if you don't use prepared statements or escape it (read link below
        $sql = 'SELECT * FROM tablename where age = "31"';
    } else if(isset($_GET['name'])) {
        // Same as for age but $_GET['name'] in this case of course.
        $sql = 'SELECT * FROM tablename order by Name DESC';
    }
    $result = mysqli_query($sql, $db)
    if (!result ) {
        print( "Could not execute query! <br />" );
        die( mysql_error() . "</body></html>" );
    } // end if
    echo "<table>
    <tr>
    <th>Name</th>
    <th>Age</th>
    </tr>";
    while($row = mysqli_fetch_array($result)){
        echo "<tr>";
        echo "<td>".$row['Name']."</td>";
        echo "<td>".$row['Age']."</td>";
        echo "</tr>";
    }
    echo "</table>";
    mysqli_close($db);
?>

只要您不在查询本身中使用 $_GET 变量,上面的查询就会被保存,如果这是您想要的,您应该阅读预准备语句:http://php.net/manual/en/mysqli.prepare.php