首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当值有引号时,列值的字符串长度减少了1

问当值有引号时,列值的字符串长度减少了1
EN

Stack Overflow用户
提问于 2015-07-02 06:14:14
回答 1查看 60关注 0票数 3

嗨,我有“注释”表,这里有一个名为"comment_text“的字段,我将这样的注释插入到表中

代码语言:javascript
复制
   $query="insert into `comments` 
    (`id`,
    `comment_text`, 
    `date`) 
    values
    ('',
    '".sprintf("%-70s",mysql_real_escape_string(ucwords(trim($strTitle63_5))))."',
    '$date')";

如您所见,我将注释长度设置为修复70个字符(始终原始注释小于70个字符)。

除非我用引号插入一个值,如果我用引号插入注释,否则一切都很好,在数据库表中,我只能看到69个字符。

例子:

我插入这两条评论

评论1:“统一费率与另一个统一费率代码重叠” 评论2:“索赔细节不符合BSI/BRI准则”

稍后,当我尝试检查字符串长度时。评论1为70,评论2为69。有什么原因吗?

每一个有引语的评论都给了我这个问题。*

提前谢谢。

更新

我的代码

模型

代码语言:javascript
复制
function get_coc5_comment_details()
{
    $this->db->select("comment_text");
    $this->db->from("comments");
    $result=$this->db->get();
    
    return $result->result_array();
}

控制器

代码语言:javascript
复制
function validate_db()
{
    $result = $this->invoice_model->get_comment_details();
    $this->load->view("comment_details_view",array("result"=>$result));
}

视图

代码语言:javascript
复制
foreach ($result as $row)
{
    $comment = $row['comment_text'];
        
    echo strlen($comment)."<br>";
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-02 06:22:10

除非我用引号插入一个值,如果我用引号插入注释,否则一切都很好,在数据库表中,我只能看到69个字符。

因为当您的字符串中有一个引号,然后通过mysql_real_escape_string运行它时,它会在字符串中添加一个\ :)

这是一个额外的角色。一旦进入数据库,\将被删除,您将看到69。

你为什么不考虑准备好的陈述呢?

而且,毫无理由地在数据库中存储额外的空间也不是很好的设计。您可以编写用于显示的包装器方法,在使用这些字符时,可以将注释附加到额外的空格中以完成70个字符的长度。我认为您应该将原始注释存储在数据库中。如果某一天,由于某种原因,这种长度要求变成75,该怎么办?

例如

代码语言:javascript
复制
$str="test";
echo str_pad($str, 70,'*');   // This will take it to 70 characters.
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31176808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档