【发布时间】:2019-02-01 00:25:34
【问题描述】:
好像撇号有两种。我想知道这个字符(')和this(')的区别
第一个是从 Microsoft Word 复制的,我试图将其粘贴到文本区域,然后插入数据库,但它不起作用。它破坏了我的查询,所以我想用这个(')替换它,请问我该如何实现。
我试过了,但是好像不行
function replace_microsolft_apostrophe($string){
$string = str_replace('’', "'", $string);
return $string;
}
我的查询如下所示:
function create_note($page_id,$title,$note,$category,$author_id){
global $conn,$notes_table,$pages_table,$notification_table;
$sql = "INSERT INTO $notes_table(page_id,title,content,note_category) VALUES(?,?,?,?)";
$query = $conn->prepare($sql);
$query->bind_param("issi",$page_id,$title,htmlspecialchars($note),$category);
$query->execute();
}
上面的查询没有这个字符(')也能正常工作
我也想知道为什么会这样?因为它是我按下的同一个键,但是当它进入 Microsoft Word 时,字符似乎发生了变化。我试图让它工作的原因是因为用户可能会从 Microsolf word 中复制已经输入的作品,并过去在我希望他们编写、注释和发布的应用程序上。
任何帮助都会很好。
【问题讨论】:
-
如果它破坏了你的查询,听起来你很容易受到 SQL 注入的攻击。您应该使用带占位符的参数化查询,这很可能会解决您的问题。您使用的是什么 API?
-
两者的区别:
’是右单引号,'是撇号。 -
我正在使用参数化查询... VALUES(?,?,?,?) ...嗯,它不会破坏我的代码,但由于这种类型的撇号,插入了一个带有空字符串的列
-
replace_microsolft_apostrophe- 只是想知道这是否是一个错字?如果它对此有影响,应该是microsoft?恕我直言,这个问题还不清楚。var_dump你的代码/查询,看看结果如何。 -
@jamesOduro 我突然想到了什么;摆脱
htmlspecialchars()。 - 这仅用于显示目的,在执行 sql 操作时不使用,并且很可能会转换不应该有的东西。
标签: php