使用codeigniter无法在数据库中插入双引号

时间:2013-09-24 07:15:27

标签: codeigniter tinymce

我正在使用codeigniter和mysql进行Web开发。我还使用了一个名为tinymce编辑器的富文本编辑器。我的问题是我在textarea中应用了文本编辑器。当我应用标题和段落标签等等一切都没关系,但是当我习惯“居中”文本时,它使用了css的“style”标签,如style =“text-align:center;”但是当我将它插入数据库时​​,它不包含双引号“”它将插入的东西只是style =并且它不会包含“”并且在其中。

The code below is used to insert data from the form including the textarea that was applied with the tinymce text-editor.

$("#send_email").click(function()
   {


    $("#myModal_loader").modal('show');
    var email_add = $("#email").val();
    var email_subject = $("#email_subject").val();
    var email_message = tinymce.get('email_message').getContent();


    var postData   = {
                      'email_add':email_add,
                      'email_subject':email_subject,
                      'email_message':email_message
                    };

    $.ajax({
        type: "POST",
        url: "<?php echo base_url();?>students/send_email",
        dataType: 'json',
        data: postData,
        success: function(data)
        {
        $("#myModal_loader").modal('hide');
        $("#myModal_confirm").modal('show');

        $("#email_subject").val("");
        $("#email_message").val("");

        console.log();


        }



    });
   $("html, body").animate({ scrollTop: 0 }, 600);

   return false;

    });
    });
    </script>

控制器

      $this->course_booking_model->insert_email_data
      ($stored_email,$tennant_email,$email_subject,$email_message); 

模型

    function insert_email_data($email_add,$tennant_email,$email_subject,$email_message)         {

  for($i=0;$i<count($email_add);$i++){

  $data = array(
     'email_add'     => $email_add[$i],
     'tennant_email' => $tennant_email,
     'email_subject' => $email_subject,
     'email_message' => $email_message
     );


        $this->db->set('time_sent','NOW()',FALSE);
        $this->db->insert('email', $data);
              }

               }

2 个答案:

答案 0 :(得分:2)

CI文档:http://ellislab.com/codeigniter/user-guide/database/active_record.html#insert

$this->db->insert();
Note: All values are escaped automatically producing safer queries.

你需要使用

$this->db->set('field', $field_value,FALSE); //FALSE will disable the automatic escaping. 

答案 1 :(得分:0)

这里的问题是textarea使用ajax从视图传递到控制器的格式化值是它不读取所有html标签,因为它在代码中转义双引号,传递不完整的html标签。 / p>

我所做的是在格式化值传递之前我删除了双引号并使用下面的代码替换它。

var new_message = email_message.replace(/"/g, '\'');

它解决了这个问题。