PHP - 将数据库信息回显为字符串

I am simply trying to echo or print out specific data from a DB into a string (i hope thats the right name), which should be a very simple process as I've done it before. The point is everytime a user inserts information into the database this string echo's or prints out the inserted data.

But for some very odd reason this time around when i try to echo out the data, I literally get this.

enter image description here

Very frustrating. As you can see from the image above i have tried using 2 different ways to do this a variable and a session, but the echo literally just prints it out. I have done this before so i am aware that it is possible. I am just a little lost into how i am meant to achieve this or even better where i went wrong. I know how to do this using a different style of coding, but i am trying to keep everything uniformed (newbie).

  $addon_name = $_SESSION['Add_On_OpName'];
  mysqli_report(MYSQLI_REPORT_INDEX); //overrid a common php nonsense error
  $prod_sel = $dbc->query("SELECT * FROM Add_On WHERE Add_On_OpName = '$addon_name'");
  $prod_sel->data_seek(0);
  while ($output = $prod_sel->fetch_assoc()) {
  $prod_run .= $output['Add_On_OpName'] . $output['Prod_Name'] . $output['Add_On_Price'] . $output['Add_On_Select'] . '<br>';
$addon = $output['Add_On_OpName']; //echo out product name
$_SESSION['Prod_Name'] = $output['Prod_Name']; //echo out product desc
$_SESSION['Add_On_Price'] = $output['Add_On_Price']; //echo out price


echo '
<p>$addon . " " .  $_SESSION["Add_On_Price"]; </p>                    
 ';

My session is started and the php file is connected to the DB. I also have error handling which has not given out any error messages.

You must do:

echo "<p>$addon ".$_SESSION["Add_On_Price"]."; </p>";

A string encapsulated into ' is rendered just as it is. Use " to render a string that contains variables. Example:

$a = 3;
$a++;
echo "the result is $a";

will result in the result is 4. On the other hand,

echo 'the result is $a';

gives the result is $a.

Use double quotes

echo "<p>$addon $_SESSION['Add_On_Price']; </p>";

You're mixing single quotes and double quotes. Single quotes do not perform interpolation of variables so when you write this:

echo '... whatever including " char and $ sign';

PHP will just literally print everything inside.

You forget some ' or " !

echo '<p>' . $addon . ' ' . $_SESSION["Add_On_Price"] . '</p>';

As the documentation points out:

Single quoted ¶ The simplest way to specify a string is to enclose it in single quotes (the character ').

Doued ¶

If the string is enclosed in double-quotes ("), PHP will interpret more escape sequences for special characters

Try not mix it.. And if within double quotes you have an associative array you may concat.

echo  "string $variable". $array["index"];

or

echo "string $variable {$array["index"]}";

Then your code should look like

 $addon_name = $_SESSION['Add_On_OpName'];
  mysqli_report(MYSQLI_REPORT_INDEX); //overrid a common php nonsense error
  $prod_sel = $dbc->query("SELECT * FROM Add_On WHERE Add_On_OpName = '$addon_name'");
  $prod_sel->data_seek(0);
  while ($output = $prod_sel->fetch_assoc()) {
     $prod_run .= $output['Add_On_OpName'] . $output['Prod_Name'] . $output['Add_On_Price'] . $output['Add_On_Select'] . '<br>';
      $addon = $output['Add_On_OpName']; //echo out product name
   $_SESSION['Prod_Name'] = $output['Prod_Name']; //echo out product desc
   $_SESSION['Add_On_Price'] = $output['Add_On_Price']; //echo out price

   echo "<p>$addon {$_SESSION["Add_On_Price"]}; </p>'";

   }

Long time ago I never use double quotes due to it require parse the whole string for special notations. However it.

Try not mix single quotes with double quotes. pick up a standard for you code you will not notice any difference than is easy to code and read without surprises