-2

我正在使用 PDO 执行查询。我有这个问题:我有一个<textarea>来自女巫的元素,我正在获取文本并将其发布到服务器端,并在使用 PDO 准备后将其添加到数据库中:

$insertQuery = $db->prepare("INSERT INTO feedback (userName, comment, time_stamp, languageCode, userIp) VALUES (:usernaem, :comment, '". $now ."', :lang, '". $ip ."')");
$insertQuery->bindValue(':comment',nl2br($_POST['comment']));
...

在我网络的其他地方,我从数据库中获取了这个“评论”并将其获取到 json 字符串:

  try {
    $commentQuery = $db->query("SELECT userName, time_stamp, comment, languageCode FROM feedback LIMIT 10");
  } catch (PDOException $ex) {
    die(json_encode(array('outcome' => false, 'message' => $ex->getMessage())));
  }

  $result = $commentQuery->fetchAll(PDO::FETCH_ASSOC);}
  $commentsJson = json_encode($result);

$commentsJson正在插入一些 javascript var:

var comments = JSON.parse('<?php echo $commentsJson; ?>');

在这里我的 chrome 浏览器抛出异常。

例如:

如果我的<textarea>: 中有此文本并将其提交给数据库:

这是一些评论

这是新的评论

在数据库中它保存为:

This is some comment<br />
and this is new line of comment

但是当我从数据库中取回它时,我得到了这个:

 var comments = JSON.parse('[{"userName":"Test","time_stamp":"2013-04-04 10:17:43","comment":"This is some comment<br \/>\nand this is new line of comment", ...

之后我的浏览器异常说:

“未捕获的语法错误:意外的令牌”

任何帮助,将不胜感激!

4

1 回答 1

-1

好的,经过半天的研究,我做了这个:

<?php
$result = $commentQuery->fetchAll(PDO::FETCH_ASSOC);
$commentsJson = json_encode($result);
?>
...
function replacetext(text, what, to){
      var searchfor = what.replace(/\r/gi,'').replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
      var replacewith = to.replace(/\r/gi,'');
      var flags = 'gi';
      var searchexp = new RegExp(searchfor,flags);
      text = text.replace(searchexp,replacewith);
      return text;
   }

    var tmp = '<?php echo $commentsJson; ?>';
    tmp = replacetext(tmp, "\n", '<br>');

谢谢您的帮助!

于 2013-04-04T11:34:29.253 回答