2013-03-17 44 views
0

好了,所以我的应用程序我使用PHP的PDO的MySQL,我有这个数据库:PHP PDO的MySQL不会用引号返回文本

"Tiny & Big: Grandpa's Leftovers" - 75% off 

现在由于某种原因在它的报价不会让我将它反映到表单字段进行编辑,对任何没有引号的条目都适用。

现在我已经检查了我的查询输出,它清楚地给我的选项:

[info] => "Tiny & Big: Grandpa's Leftovers" - 75% off 

所以,我徘徊为什么不能使用呢?

我取使用这个小功能数据:

public function fetch() 
{ 
    $this->STH->setFetchMode(PDO::FETCH_ASSOC); 
    return $this->STH->fetch(); 
} 

和实际的查询功能:

// the main sql query function 
public function sqlquery($sql, $objects = array()) 
{ 
    global $core; 

    try 
    { 
     $this->STH = $this->database->prepare($sql); 

     foreach($objects as $k=>$p) 
     { 
      // +1 is needed as arrays start at 0 where as ? placeholders start at 1 in PDO 
      if(is_numeric($p)) 
      { 
       $this->STH->bindValue($k+1, (int)$p, PDO::PARAM_INT); 
      } 
      else 
      { 
       $this->STH->bindValue($k+1, $p, PDO::PARAM_STR); 
      } 
     } 

     return $this->STH->execute(); 
    } 

    catch (Exception $e) 
    { 
     $core->message($e->getMessage()); 
    } 

    $this->counter++; 

    $this->queries .= "<br />$sql"; 
} 

回答

3

“编辑表单域”是一个提示,我认为你正在做这样的事情:

<input value="<?php echo $row['info']; ?>"> 

由于info字段中的引用,这不会很好。它输出value=""。使用htmlspecialchars($row['info'], ENT_QUOTES)正确地转义html中的排放引用。

+0

嗯,我应该那样做所有的时间,我把数据库输出到文本字段? – NaughtySquid 2013-03-17 20:39:52

+0

修好了!所以,谢谢你,我会使用实体,因为有时候用户可能会把双重,有时单一。 – NaughtySquid 2013-03-17 20:41:28

+0

@MichaelBerkowski'htmlspecialchars'会将'ENT_QUOTES'设置为两者。 – 2013-03-17 20:48:11