Displaying an image using a php variable

38,965

Solution 1

First of all, you should not use PHP Shorttags.

When you use the PHP Shorttags you have to say:

<img src="<?=$image ?>" alt="test" />

But i would encourage to escape the Content off the variable like this:

<img src="<?php echo htmlspecialchars($image); ?>" alt="test" />

Your extra question:

This should lead to an syntax error because the string could not be parsed, just use $image = $row['image'];

Solution 2

Try this

<img src= "<?php echo $image ?>" alt="test"/>

Solution 3

try

<img src= "<?= $image ?>" alt="test"/>

or

<img src= "<? echo $image; ?>" alt="test"/>
Share:
38,965
user1783150
Author by

user1783150

Updated on May 27, 2020

Comments

  • user1783150
    user1783150 almost 4 years

    I'm trying to display images by taking their file path from an sql table, but i'm having a lot of troubles.

    Here is whats going on:

    $image is a variable containing the text "itemimg/hyuna.png" which is path to an image.

    $image = 'itemimg/hyuna.png';
    

    I assumed I would be able to display the image outside of the php block like so:

    <img src= "<? $image ?>" alt="test"/>
    

    This doesn't work though for some reason.

    So I thought maybe it's not able to read the variable outside the php block(i'm a beginner), so for testing i did:

    <h1> "<? $image ?>" </h1>
    

    It displays itemimg/hyuna.png as a h1 banner.

    Meaning it's accessing the varible fine.

    So I thought maybe the path is wrong. So I tried:

    <img src= "itemimg/hyuna.png" alt="test"/>
    

    This displays the image perfectly.

    So now I'm stuck scratching my head why the first bit of code displays nothing but the text "test" from "alt="

    Extra question: How do I go about assigning a value from an sql cell to a variable? I attempted the following with no luck:

    $q = "select * from item where id=$id";
    $results = mysql_query($q);
    $row = mysql_fetch_array($results, MYSQL_ASSOC);
    $image = ".$row['image'].";
    

    item is a table with a collumn: image which contains file paths to images

  • Elias Van Ootegem
    Elias Van Ootegem over 10 years
    There's nothing wrong with the short-echo-tag <?=. It's always enabled. htmlspecialchars is a good point, though a bit much... I'd suggest just doing str_replace('"','',$image).
  • user1783150
    user1783150 over 10 years
    Works perfectly. What would be benefit of using the second example over the first?
  • andreashager
    andreashager over 10 years
    If you have for example a double quote (") in your string and you just echo the content of the variable the double quoute will ruin the html attribute tag (not proper closed) and invalidate the html.