Trying to display images in html by calling a php script in the img tag. php script fetches the image binary from mysql. image is not displaying. here is img tag

<img src="getdata.php?id=1" />

my question is, it seems people are using the "...php?id=1" to pass an identifier 'id' to the script. I haven't been able to find anything about how these work, what the syntax is, and whether this automatically creates a variable '$id' in the script with a value of 1, which is implied, but since i can't get the script to work i cannot determine if accurate. Can anyone either explain or point to a resource that handles this?

thanks!
matt

The url: getdata.php?id=1 works just like a regular url on any php page, only difference with images the content type returned to the client/browser.

What php does is parse the URL sent to it via HTTP, in this case getdata.php?id=1.
If the HTTP method is "GET" as is the case, it will create a global variable $_GET.

$_GET is an associative array, with each parameter in the url set as an index, and the associated value as the value.

for getdata.php?id=1

$_GET = array('id'=>'1'); // this is what PHP does automatically

so you can get the value with:

$id = $_GET['id']; // will be equal to '1'

Older versions of PHP had a feature called "register globals" (I think). It automatically made every parameter passed in the URL a global.

Eg: for getdata.php?id=1

$id; // will be equal to '1' in older php version, or when register globals is on

This isn't considered safe practice however, so may servers will disable it.

Something to note with generating images with php is that any output other than the binary data for the image will cause the image not to show.
So if you have a single error, everything messes up..

If you want to debug, find where you have the line:

header("Content-Type:

and add a return or die(); right before it so you can debug. Otherwise your debugging will be interpreted by teh browser as part of the image data...

by god man that was a succinct, clear answer and i thank you for it. now if only my f***ing script was working...

This article has been dead for over six months. Start a new discussion instead.