【问题标题】:How to prevent single quotes when using $this->db->escape in codeigniter在codeigniter中使用$this->db->e​​scape时如何防止单引号
【发布时间】:2012-11-27 12:43:01
【问题描述】:

我有插入单引号的列。因为$this->db->query 已经处理了所有特殊字符。但我的问题是我在插入时插入 ganesh's 之类的数据,只插入 ganesh;缺少单引号后的数据。所以我开始使用$this->db->escape,但这会在我的数据中添加单引号,这不是如何防止这种情况所必需的

我的代码

$sql="insert into tablename (list_name,list_address) values(?,?)" 
$res=this->db-query($sql,array($name,$add));

我的错误是在前端。不是后端。我将删除问题。

【问题讨论】:

  • 我尝试使用 where_not_in where(not exists()) 两者都没有执行.. 我也尝试了使用 null,false 的建议在最后.. 即使没有工作!
  • 我在第一个表中添加了一个字段,作为一个标志。因此,当我插入第二张表时,我会更新标志。这解决了我的问题,避免了复杂的查询!
  • 您是说您希望数据像ganesh'sganeshs 一样存储吗?

标签: mysql codeigniter


【解决方案1】:

在复杂查询的情况下,我发现像这样发送原始查询更容易:

$query = "your query";
$result = $this->db->query($query);

在将变量插入查询之前不要忘记转义变量,如下所示:

$var = $this->db->escape($var);

【讨论】:

    【解决方案2】:

    如果要使用单引号保存数据,则需要在将数据保存到数据库之前添加斜杠,如下所示:

    $sql="insert into tablename (list_name,list_address) values(?,?)";
    $res=this->db-query($sql,array(addslashes($name), $add));
    

    然后将其保存到您的数据库中,完成此操作后,您很可能需要使用stripslashes() 从数据中删除斜杠,然后再将其输出到浏览器。

    【讨论】:

    • 我试过你的答案,但它不起作用。它将它保存为 ganesh
    • @ganeshrj 在您的问题中,您能否发布您使用的实际代码?
    • $name=addslashes($name);我的查询$sql="insert into tablename (list_name,list_address) values(?,?)" $res=this->db-query($sql,array($name,$add)); 我在做什么是正确的用法吗?
    • @ganeshrj 你能试试我刚刚添加到我的答案吗?
    • 我的意思是你之前的回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-07
    • 2016-07-14
    • 1970-01-01
    • 2013-05-31
    • 2022-07-23
    • 1970-01-01
    相关资源
    最近更新 更多