Only first word In a multi word variable is being displayed

In my form I have the following values that are based on a standard PHP/MySql query.

echo "<tr>\n
        <td align='right'><b>Location</b></td>
        <td><input name='student_location' type='text' size='25' style='font-weight: 700' value=$location></td>
    </tr>";

When the value of $location is a single word it displays properly, when it is more than one word say ‘North Campus’ only ‘North’ displays.

I’ve doubled and triple checked and the correct value is in the database, when I do an echo for the value of $location it echoes the correct value but when it’s displayed in the field above it chops the last word. It’s doing it to all of my variables that are more than one word, so I’ve missed something obvious.

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

You forgot quotes :

echo "<tr>\n
    <td align='right'><b>Location</b></td>
    <td><input name='student_location' type='text' size='25' style='font-weight: 700' value=\"$location\"></td>
</tr>";

Without quotes, the first word will be noted, others will be interpreted as wrong attributes.

Solution 2

You need to put your single quotes around it to make it a valid attribute. The HTML is being created as value=North Campus which gets interpreted as value="North" and some Campus attribute that has no value. Use value='$location'.

Solution 3

you need to quote it by escaping the “

echo "<tr>\n
        <td align='right'><b>Location</b></td>
        <td><input name='student_location' type='text' size='25' style='font-weight: 700' value=\"$location\"></td>
    </tr>";

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply