2016-04-03 346 views
0
<?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); 
?> 

在选择名称或年龄时,我应该在哪里添加运行sql语句的name和age的if else语句?姓名和年龄是从不同的列,但在同一个表PHP分离如果其他语句

+1

你的意思我们需要运行这些$ sql中的任何一个?请妥善澄清你的问题。 –

+0

要在选择名称或年龄时运行sql语句 – Synetrix

+0

好的,以及可能的查询字符串键是什么?正如$ _GET ['name']和$ _GET ['age']? –

回答

1
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'; 
} 

然后,你可以使用它的URL,如:

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

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

编辑:你不应该使用mysql *(不建议使用)的功能,而应该使用mysqli *或PDO。有关mysql *函数的更多信息,请阅读this question上发布的答案。

+1

在PHP 7中,'mysql_'函数实际上被**删除**,并且在去年12月发布。 – Arjan

0

看起来您需要检查$ _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']."'"; 
} 

希望这有助于。上述

+0

它给了我这个错误: 解析错误:语法错误,意外的'&&'(T_BOOLEAN_AND),期待','或')' – Synetrix

+0

第3行缺少'') – Rasclatt

+0

也只是一个附注,如果你正在检查'empty',则需要使用'isset'。你只需要'if(!空($ _ GET ['Age']))' – Rasclatt

0
<?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