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

时间:2018-03-15 05:24:33

标签: php mysqli

我有一个文本框,我可以输入双引号词:hello i am" steve"我可以在mysqli_real_escape_string

之后成功将字符串插入我的数据库
<textarea name="description"></textarea>
下面的

php:

$text_data = $_POST['description']; // hello my name is "steve" 
$final_text = mysqli_real_escape_string($this->conn,$text_data);

// the above without removing double quotes can be inserted into the db

but if it is single quotes and I convert to double quotes then it cannot be inserted.

$text_data = $_POST['description']; // hello my name is 'steve'
$final_text = str_replace("'",'"',$text_data);
$final_text = mysqli_real_escape_string($this->conn,$text_data);

所以我的问题是:

  1. 如何使用双引号?是不是需要删除或替换为&#34; /某些东西?

  2. 如果第一种情况:双引号工作正常,那么第二种情况如何从单引号转换为双引号无法插入数据库?

  3. 提前多多感谢

2 个答案:

答案 0 :(得分:0)

MySQL将单引号视为字符串END。要使用单引号INSERT字符串,您必须ESCAPE将其作为\'Hello World\'

这应该无缝地工作

$text_data = "hello my name is \'steve\'";

答案 1 :(得分:-1)

一些事情......

首先,我会阅读单引号和双引号行为之间的差异。正是这样,你才有了两者之间差异的基础。

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

如果我替换代码中的单引号,就像代码一样,建议您的语句如下所示:

"hello my name is "steve""

不要让我们仔细看看&#34;之间发生的事情。和史蒂夫。

"hello my name is "  steve ""

您的查询失败的原因,我相信是因为史蒂夫不再被引用了。

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

希望有所帮助

更新:

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