0
<?php

mysql_connect("localhost", "root", "usbw");
mysql_select_db("europese unie");

$id = $_GET['Land'];
$query = "SELECT `Land`, `Oppervlakte`, `Inwoners`, `Klimaat`, `Motto`, `UTC` FROM `algemene informatie` WHERE `Land` = '$id'";
$result = mysql_query($query);
$row = mysql_fetch_row($result);
$land = $row[0];

echo "$land"; 



print("<h2>$id</h2>");
print("<br />");


die(mysql_error())

?>

when i tried to run this code i expected to echo the first land that came up with this query instead i got nothing. i am not a very experienced PHP or Mysql user nor is english my first language so pleas do not hold annything against me.

22
  • Whats the output of var_dump($row)? Commented Apr 4, 2014 at 15:44
  • have you tried echo $land; Commented Apr 4, 2014 at 15:46
  • This is a dangerous query using a $_GET variable directly in a query. Read up on SQL injections and look into using PDO with prepared statements. Commented Apr 4, 2014 at 15:46
  • 1
    First try to get anything from database with query : SELECT Land, Oppervlakte, Inwoners, Klimaat, Motto, UTC` FROM algemene informatie WHERE 1` . Maybe you don't have a row with THIS particular $id . Besides I dont know if you can name your table with space, this might be an error also. And third of all, you should call fields like this: algemene informatie`.`Land Commented Apr 4, 2014 at 15:51
  • 1
    @Fred-ii-thank you print_r($row); now gives Array ( [0] => Belgie [1] => 31 [2] => 11 [3] => gematigd zeeklimaat [4] => Eendracht maakt macht [5] => 1 ) i can finaly proceed Commented Apr 4, 2014 at 16:39

3 Answers 3

2

Solved

Taken from comments:

"well the adress is localhost:8080/details.php?Land=%20Belgie and $id = $_GET['Land']; is the id so Belgie should be $id but as var_dump($result) it keeps giving bool(false)"

  • Basically what you're asking SQL, is to find (space)Belgie and since your column doesn't contain the word Belgie with a space, it will not find it; least that's what I think is happening

That %20 is a space btw. That could be the problem. You could make use of the trim() function.

Use:

$id = trim($_GET['Land']);

OP:

thank you print_r($row); now gives Array ( [0] => Belgie [1] => 31 [2] => 11 [3] => gematigd zeeklimaat [4] => Eendracht maakt macht [5] => 1 ) i can finaly proceed


Sidenote: Your present code is open to SQL injection. Use mysqli_* functions. (which I recommend you use and with prepared statements, or PDO)

mysql_* functions are deprecated and will be removed from future PHP releases.


Footnotes:

mysql_* functions deprecation notice:

http://www.php.net/manual/en/intro.mysql.php

This extension is deprecated as of PHP 5.5.0, and is not recommended for writing new code as it will be removed in the future. Instead, either the mysqli or PDO_MySQL extension should be used. See also the MySQL API Overview for further help while choosing a MySQL API.

These functions allow you to access MySQL database servers. More information about MySQL can be found at » http://www.mysql.com/.

Documentation for MySQL can be found at » http://dev.mysql.com/doc/.

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

Comments

1

Do not use mysql_connect() this is going to become outdated, use mysqli_connect().

I.e.:

$connection = new mysqli('host', 'username', 'password', 'db table', 'portnumber');

    if (mysqli_connect_errno()){
        printf("<b>Connection failed:</b> %s\n", mysqli_connect_error());
        exit;
    } 

run you query through mysqli object and remember to use injection prevention or you will get people hacking you site.

e.g.

http://www.phphaven.com/article.php?id=65

Hope that helps

4 Comments

when i do this i get this error Class 'mysqli_connect' not found in G:\... on line 20
That's because you're already using mysql_* functions. This answer doesn't qualify as an answer, per se. @user3498790 if you haven't changed all your functions for mysqli API, then don't use this.
If you are using a local LAMP stack then you need to install this hopefully you can just enable this in your php.ini i.e. ;extension=mysqli.so change to extension=mysqli.so
Fred's comment is valid although if you enable strict PHP programming you will get a tone of warnings, learn PHP right and use recommended up to date functions and objects!!!
0

Quote out the variables.

echo $land;

print("<h2>" . $id . "</h2>");

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.