Displaying an image using a php variable
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"/>
user1783150
Updated on May 27, 2020Comments
-
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 over 10 yearsThere'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 doingstr_replace('"','',$image)
. -
user1783150 over 10 yearsWorks perfectly. What would be benefit of using the second example over the first?
-
andreashager over 10 yearsIf 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.