lonewaft
lonewaft

Reputation: 910

Displaying SQL table data in html table not working

I am trying to query and select data from an sql table and then display it in html. This is my code.

$result = mysqli_query($dbhandle, $query)
    or die(mysql_error().'<br>SQL:'.$query);
echo '<table style ="border:1px solid black;">';

while($row = mysqli_fetch_array($result)) {
    echo '<tr>';
    echo '<td style="border:1px solid black;">{$row['first_name']}</td>';
    echo '<td style="border:1px solid black;">{$row['last_name']}</td>';
    echo '<td style="border:1px solid black;">{$row['grade']}</td>';
    echo '<td style="border:1px solid black;">{$row['gpaP']}</td>';
    echo "<td style="border:1px solid black;">{$row['AGP']}</td>";
    echo "<td style="border:1px solid black;">{$row['awardP']}</td>";
    echo "<td style="border:1px solid black;">{$row['awardTP']}</td>";
    echo "<td style="border:1px solid black;">{$row['rigorP']}</td>";
    echo "<td style="border:1px solid black;">{$row['APP']}</td>";
    echo "<td style="border:1px solid black;">{$row['positionP']}</td>";
    echo "<td style="border:1px solid black;">{$row['hoursP']}</td>";
    echo "<td style="border:1px solid black;">{$row['selectionP']}</td>";
    echo "<td style="border:1px solid black;">{$row['activityTypeP']}</td>";
    echo "<td style="border:1px solid black;">{$row['activityYearsP']}</td>";
    echo "<td style="border:1px solid black;">{$row['date']}</td>";
    echo "<td style="border:1px solid black;">{$row['IP']}</td>";
    echo '</tr>';
}
echo '</table>';

It gives me an error saying there is an unexpected string at the last_name cell. If I remove the style parameters from the cells it works. Somebody point out my error please?

Upvotes: 3

Views: 1341

Answers (3)

Jo&#227;o Silva
Jo&#227;o Silva

Reputation: 91379

You are mixing single quotes ' with double quotes "". For example, if you start the line with " and then use it again before the end of the line, you need to escape it with \". My suggestion is for you to stick with one style, and use it for all the lines. For example, usign "":

  echo "<td style=\"border:1px solid black;\">{$row['first_name']}</td>";
  echo "<td style=\"border:1px solid black;\">{$row['IP']}</td>";

Upvotes: 1

G-Nugget
G-Nugget

Reputation: 8846

Your single and double quptes are getting mixed up between the PHP and HTML. The easiest way to fix it is to use the heredoc syntax:

echo <<<EOT
<tr>
<td style="border:1px solid black;">{$row['first_name']}</td>
<td style="border:1px solid black;">{$row['last_name']}</td>
<td style="border:1px solid black;">{$row['grade']}</td>
<td style="border:1px solid black;">{$row['gpaP']}</td>
<td style="border:1px solid black;">{$row['AGP']}</td>
<td style="border:1px solid black;">{$row['awardP']}</td>
<td style="border:1px solid black;">{$row['awardTP']}</td>
<td style="border:1px solid black;">{$row['rigorP']}</td>
<td style="border:1px solid black;">{$row['APP']}</td>
<td style="border:1px solid black;">{$row['positionP']}</td>
<td style="border:1px solid black;">{$row['hoursP']}</td>
<td style="border:1px solid black;">{$row['selectionP']}</td>
<td style="border:1px solid black;">{$row['activityTypeP']}</td>
<td style="border:1px solid black;">{$row['activityYearsP']}</td>
<td style="border:1px solid black;">{$row['date']}</td>
<td style="border:1px solid black;">{$row['IP']}</td>
</tr>
EOT;

This syntax makes it much easier since you can use both single and double quotes without escaping them and variables will be evaluated. Also, in your original code, the variables aren't going to be evaluated since they're in single quotes.

Upvotes: 3

Peter Gluck
Peter Gluck

Reputation: 8236

Your code mixes two different styles of quotes, both of which are valid in PHP and both of which require some additional escaping.

You should pick a style (either wrap in single quotes or wrap in double quotes) and then make sure you escape quotes of the same type within the string.

Upvotes: 2

Related Questions