PHP误读了HTML字符串中的引号

时间:2011-08-09 12:39:35

标签: php html string escaping

PHP在第一个echo语句之后挂起,因为那里的最后一个引用是它看到的第一个引用。因此,我的查询不会被执行。发生了什么事?

    <html>
    <head><title>New.</title>
    </head>
    <body>
    <?php

      $connect = mysql_connect("localhost", "name", "password");

   if (!$connect) {
    die ("Hey loser, check your server connection.");
    alert("No access.");
   }

   mysql_select_db("db");

   echo "<div class=\"accwrapper\">";
   echo "<div id=\"resor\">";

    $rresult=mysql_query("SELECT * from node");

    while($row=mysql_fetch_array($rresult, MYSQL_ASSOC)) { 

   echo "<tr class=\"prislista-row\"><td>";

   echo $row["node_title"];

   echo "</td><td class=\"list-price\">";

   echo $row["uc_products_list_price"];

    echo "</td><td class=\"sell-price\">";

     echo $row["uc_products_sell_price"];

     echo "</td></tr>";

  }

   ?>  
   </div><!--resor-->

    </div><!--accwrapper-->

   </body>

编辑:之后的一切

          echo '<div class="accwrapper">'; //the last single quote in this line

是一个字符串,即使是单引号也是如此。删除单引号和警报/死亡的东西,仍然没有运气。但感谢大家的回应。

3 个答案:

答案 0 :(得分:2)

在你的回声周围使用单引号然后你就不必逃避

     echo '</td><td class="sell-price">';

但主要问题是警报是javascript函数而不是php

删除此行

   alert("No access.");

修改

我拿出你的mysql东西,它的工作原理你现在只需弄清楚你的sql有什么问题

  <html>
  <head><title>New.</title>
  </head>
  <body>

<?php

   $connect = true;

if (!$connect) {
 die ("Hey loser, check your server connection.");
}

//mysql_select_db("db");


     echo '<div class="accwrapper">';
     echo '<div id="resor">';


    echo '<tr class="prislista-row"><td>';

    echo $row["node_title"];

    echo '</td><td class="list-price">';

    echo $row["uc_products_list_price"];

    echo '</td><td class="sell-price">';

    echo $row["uc_products_sell_price"];

    echo '</td></tr>';



 ?>  
 </div><!--resor-->

  </div><!--accwrapper-->

 </body>

答案 1 :(得分:0)

如果您使用的是echo标签,请尝试使用单引号,例如:

 echo '<div class="accwrapper">';

答案 2 :(得分:0)

以这种方式编写应该永远不会导致问题;):

<html>
<head>
  <title>New.</title>
 </head>

 <body>
 <?php
   $connect = mysql_connect("localhost", "name", "password");

   if (!$connect) {
    die ("Hey loser, check your server connection.");
    alert("No access.");  //this will never execute
   }

   mysql_select_db("db");
   $rresult=mysql_query("SELECT * from node");
  ?>   

   <div class="accwrapper">
   <div id="resor">

   <?php while($row=mysql_fetch_array($rresult, MYSQL_ASSOC))  : ?>
   <tr class="prislista-row">
     <td><?php echo $row["node_title"]; ?></td>
     <td class="list-price"><?php echo $row["uc_products_list_price"]; ?></td>
     <td class="sell-price"><?php echo $row["uc_products_sell_price"]; ?></td>
   </tr>
   <?php endwhile; ?>  

   </div><!--resor-->
</div><!--accwrapper-->

所以让HTML成为HTML,PHP应该保持PHP。尽量避免混合它们,就像在PHP中回显HTML一样。