Javascript 尝试将法语/英语文本更新为mysql数据库时出错
我有一页可以编辑数据。在本例中,我将显示编辑法语数据的页面。问题是,当我用法语粘贴文本并单击进行编辑和更新时,它假设mysql\u错误。这只发生在法语和英语中,我可以用葡萄牙语做。我只使用这种树语言 我试过一些方法,但什么都没发生。。。 所评论的是我所尝试的 当我按下按钮时,会发生这样的情况:“Ocorreu um erro,tente de novo!您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“ont forcéa travailler comme Appentia l'usine d'orfèvrerie de son”附近使用的正确语法。”Javascript 尝试将法语/英语文本更新为mysql数据库时出错,javascript,php,html,css,mysql,Javascript,Php,Html,Css,Mysql,我有一页可以编辑数据。在本例中,我将显示编辑法语数据的页面。问题是,当我用法语粘贴文本并单击进行编辑和更新时,它假设mysql\u错误。这只发生在法语和英语中,我可以用葡萄牙语做。我只使用这种树语言 我试过一些方法,但什么都没发生。。。 所评论的是我所尝试的 当我按下按钮时,会发生这样的情况:“Ocorreu um erro,tente de novo!您的SQL语法有错误;请查看与您的MariaDB服务器版本对应的手册,以了解在第1行的“ont forcéa travailler comme
TL;DR使用htmlspecialchars($\u POST['text\u fr]',ENT\u引号)
或使用一些SQL库
$title\u fr、$text\u fr或其他siilar变量中的文本可能包含一个单引号字符('),这会打乱您的查询
假设$\u POST['text\u fr']
的值是C'est la vie
然后,生成的查询看起来有点像这样:
UPDATE tb_biografia SET text_fr='C'est la vie' WHERE id='10'
如您所见,应该分隔字符串的引号和字符串本身中的引号混合在一起,结果查询完全无效。即使是堆栈溢出的语法HighlL也被这一点弄糊涂了
这是一个导致SQL注入攻击的巨大安全漏洞。如果您不能完全确定自己知道自己在做什么,请不要自己根据用户输入编写SQL查询
本例中的问题是函数htmlspecialchars
的行为。默认情况下,它不转义单引号,只转义双引号。看见您需要提供第二个参数,ENT_引号,以便它也对单引号进行编码
$text_fr = htmlspecialchars ($_POST['text_fr'], ENT_QUOTES);
菲律宾万岁
但是,我确实建议您使用一些有助于构建查询并防止您犯类似错误的工具:
- PDO和准备好的语句(PHP核心的一部分)
- NotORM、Dibi、SQL查询生成器。。。轻量级库,便于使用SQL数据库进行操作
- 条令或类似的ORM框架-用于大型项目的繁重工作
TL;DR使用
htmlspecialchars($\u POST['text\u fr]',ENT\u引号)
或使用一些SQL库
$title\u fr、$text\u fr或其他siilar变量中的文本可能包含一个单引号字符('),这会打乱您的查询
假设$\u POST['text\u fr']
的值是C'est la vie
然后,生成的查询看起来有点像这样:
UPDATE tb_biografia SET text_fr='C'est la vie' WHERE id='10'
如您所见,应该分隔字符串的引号和字符串本身中的引号混合在一起,结果查询完全无效。即使是堆栈溢出的语法HighlL也被这一点弄糊涂了
这是一个导致SQL注入攻击的巨大安全漏洞。如果您不能完全确定自己知道自己在做什么,请不要自己根据用户输入编写SQL查询
本例中的问题是函数htmlspecialchars
的行为。默认情况下,它不转义单引号,只转义双引号。看见您需要提供第二个参数,ENT_引号,以便它也对单引号进行编码
$text_fr = htmlspecialchars ($_POST['text_fr'], ENT_QUOTES);
菲律宾万岁
但是,我确实建议您使用一些有助于构建查询并防止您犯类似错误的工具:
- PDO和准备好的语句(PHP核心的一部分)
- NotORM、Dibi、SQL查询生成器。。。轻量级库,便于使用SQL数据库进行操作
- 条令或类似的ORM框架-用于大型项目的繁重工作
用此代码替换您的代码。希望能有帮助。谢谢使用mysql_real_escape_字符串对特殊字符进行转义,并删除php变量查询中的{}
if ($_POST)
{
$id = $_POST['id'];
$title_fr = mysql_real_escape_string($_POST['title_fr']);
$subtitle_fr = mysql_real_escape_string($_POST['subtitle_fr']);
$text_fr = mysql_real_escape_string($_POST['text_fr']);
$q = mysql_query ("UPDATE tb_biografia SET title_fr='$title_fr', subtitle_fr='$subtitle_fr', text_fr='$text_fr' WHERE id='$id}'") or die ("Ocorreu um erro, tente de novo! " .mysql_error());
if($q){
echo "<script>alert ('Editado com sucesso'); window.location='admin_biografia.php'</script>";
}
}
if($\u POST)
{
$id=$_POST['id'];
$title\u fr=mysql\u real\u escape\u字符串($\u POST['title\u fr']);
$subtitle\u fr=mysql\u real\u escape\u字符串($\u POST['subtitle\u fr']);
$text\u fr=mysql\u real\u escape\u字符串($\u POST['text\u fr']);
$q=mysql\u query(“更新tb\u biografia SET title\u fr='$title\u fr',subtitle\u fr='$subtitle\u fr',text\u fr='$text\u fr',其中id='$id}'”)或die(“Ocorreu um erro,tente de novo!”.mysql\u error());
如果($q){
echo“alert('Editado com successo');window.location='admin_biografia.php';
}
}
用此代码替换您的代码。希望能有帮助。谢谢使用mysql_real_escape_字符串对特殊字符进行转义,并删除php变量查询中的{}
if ($_POST)
{
$id = $_POST['id'];
$title_fr = mysql_real_escape_string($_POST['title_fr']);
$subtitle_fr = mysql_real_escape_string($_POST['subtitle_fr']);
$text_fr = mysql_real_escape_string($_POST['text_fr']);
$q = mysql_query ("UPDATE tb_biografia SET title_fr='$title_fr', subtitle_fr='$subtitle_fr', text_fr='$text_fr' WHERE id='$id}'") or die ("Ocorreu um erro, tente de novo! " .mysql_error());
if($q){
echo "<script>alert ('Editado com sucesso'); window.location='admin_biografia.php'</script>";
}
}
if($\u POST)
{
$id=$_POST['id'];
$title\u fr=mysql\u real\u escape\u字符串($\u POST['title\u fr']);
$subtitle\u fr=mysql\u real\u escape\u字符串($\u POST['subtitle\u fr']);
$text\u fr=mysql\u real\u escape\u字符串($\u POST['text\u fr']);
$q=mysql\u query(“更新tb\u biografia SET title\u fr='$title\u fr',subtitle\u fr='$subtitle\u fr',text\u fr='$text\u fr',其中id='$id}'”)或die(“Ocorreu um erro,tente de novo!”.mysql\u error());
如果($q){
echo“alert('Editado com successo');window.location='admin_biografia.php';
}
}
您传递的值类似于“{$title\u fr}”
,这将产生一个错误
改变这个
title_fr='{$title_fr}'
与
它会起作用的 您传递的值类似于“{$title\u fr}”
,这将产生一个错误
改变这个
title_fr='{$title_fr}'
与
它会起作用的 只需将此title\u fr='{$title\u fr}'
更改为title\u fr=''.
即可。谢谢,欢迎您的回答,现在您可以检查我的答案:)只需将此title\u fr='{$title\u fr}'
更改为title\u fr='.
即可。谢谢,谢谢,谢谢你的回答谢谢,谢谢你的回答谢谢,谢谢你的回答谢谢,谢谢你的回答谢谢,谢谢你的回答谢谢,谢谢你的回答