Php 直接双引号文本可以插入到sql数据库中,但单引号到双引号转换的字符串作为空字符串插入到数据库中?

Php 直接双引号文本可以插入到sql数据库中,但单引号到双引号转换的字符串作为空字符串插入到数据库中?,php,mysqli,Php,Mysqli,我有一个文本框,我可以在其中输入双引号的单词,比如:你好,我是“史蒂夫”,我可以在mysqli\u real\u escape\u string之后成功地将字符串插入我的数据库 <textarea name="description"></textarea> 因此,我的问题是: 为什么用双引号呢?它不需要删除或替换为“/什么吗 如果第一种情况:双引号工作正常,那么第二种情况在从单引号转换为双引号时,为什么不能插入数据库 提前非常感谢MySQL将单引号视为字符串END。为

我有一个文本框,我可以在其中输入双引号的单词,比如:你好,我是“史蒂夫”,我可以在mysqli\u real\u escape\u string之后成功地将字符串插入我的数据库

<textarea name="description"></textarea>
因此,我的问题是:

  • 为什么用双引号呢?它不需要删除或替换为“/什么吗

  • 如果第一种情况:双引号工作正常,那么第二种情况在从单引号转换为双引号时,为什么不能插入数据库


  • 提前非常感谢

    MySQL
    将单引号视为字符串
    END
    。为了
    插入带有单引号的字符串,您必须
    将其转义为
    \'Hello World\'

    这应该可以无缝地工作

    $text\u data=“你好,我的名字是‘史蒂夫’”

    几件事

    首先,我会读一些关于单引号和双引号行为之间的差异的书。这样,接下来你就有了两种行为差异的基础

    其次,让我们看看代码的逻辑:

    如果我将代码中的单引号替换为代码中的单引号,则建议您的语句如下所示:

    "hello my name is "steve""
    
    不,让我们仔细看看“和史蒂夫”之间发生了什么

    "hello my name is "  steve ""
    
    我相信你的查询失败的原因是因为史蒂夫不再被引用

    使用预先准备好的语句确实是解决问题的最佳方法

    希望有帮助

    更新:

    $text_data = "hello my name is 'steve'"; 
    $final_text = str_replace("'",'\"',$text_data);
    

    谢谢你的快速回答!但是我已经用双引号替换了单引号。你已经打印出转换字符串后得到的值了吗?替换是一种方法,但不是最佳做法:-)是的,我确实替换了它,它按预期打印出来:你好,我的名字是“steve”。重复引用Steven的话,这与问题无关还是有误导性?谢谢你的回答,我已经更新了我的问题。如您所见,我使用$_POST['description']而不是硬编码字符串,您的意思是查询没有插入字符串。你得到了什么错误?但是其他没有引号的字符串正在被你的查询插入其他字符串正在被插入><这就是为什么我如此困惑的原因法鲁克·汗和普南都试图说明转义字符的概念。但是他们向你展示了如何使用你输入的字符串。由于您的值来自$\u POST,因此您必须使用srt\u replace将斜杠与报价一起添加。应关闭并删除此问题,因为没有显示实际查询,原因可能是任何原因。一个很可能是愚蠢的错误
    $text_data = "hello my name is 'steve'"; 
    $final_text = str_replace("'",'\"',$text_data);