我有一个文本框,我可以输入双引号词: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);
所以我的问题是:
如何使用双引号?是不是需要删除或替换为&#34; /某些东西?
如果第一种情况:双引号工作正常,那么第二种情况如何从单引号转换为双引号无法插入数据库?
提前多多感谢
答案 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);