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 );
?>

Where should I add an if else statement for name and age that runs the sql statement when either the name or age is selected? Name and Age is from different column but in the same table

13
  • 1
    Do you mean we need to run any one of these $sql? Please clarify your question properly. Commented Apr 3, 2016 at 7:15
  • To run the sql statement when either the name or age is selected Commented Apr 3, 2016 at 7:17
  • Okay, and what are the possible query string keys? As in $_GET['name'] and $_GET['age']?? Commented Apr 3, 2016 at 7:18
  • 2
    @Synetrix you really should get used to PDO (or Mysqli) because all mysql_ functions have been removed in PHP 7. Commented Apr 3, 2016 at 7:52
  • 1
    You have a lot of small other errors in the code, you don't close your table rows for each array you fetch. your age query uses the wrong quotes at 31 and thus closes the string early and opens a new one, Surely you have to be experiencing some errors? try and add error_reporting(-1) in front as well. Commented Apr 3, 2016 at 8:23

3 Answers 3

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

Then you could use it for URLs like:

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

Just note that this is a very simplified example, you need to validate the input as well.

EDIT: You should not use mysql* (deprecated) functions, use mysqli* or PDO instead. For more information about mysql* functions read answers posted on this question.

Sign up to request clarification or add additional context in comments.

1 Comment

The mysql_ functions are actually removed in PHP 7. And that was released in December of last year.
0

Looks like you need to check the key of $_GET.

Try this:

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']."'";
}

Hope this helps.

7 Comments

It gives me this error: Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND), expecting ',' or ')'
Missing a )on line 3
Also just a side note, you don't need to use isset if you're checking for empty as well. You just need if(!empty($_GET['Age']))
Undefined variable on if ( !( $result = mysql_query( $sql, $db ) ) ) Could not execute query! Query was empty. But my query was not empty
Then it's probably not getting the index correctly. Is it Age and Name? Or age and name? Please specify the array index accordingly.
|
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);
?>

the queries above are save as long as you don't use the $_GET variables in the query itself, if that is what you want you should read up on prepared statements: http://php.net/manual/en/mysqli.prepare.php

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.