我的代码是通过textarea更新MySQL表行(同一页面上的所有代码)。更新表单(HTML部分)在PHP if语句中回显。当用户单击“编辑”按钮时,会弹出一个textrea(使用Javascript)。他们输入更新并点击提交,然后立即在MySQL数据库和网站上更新它。这是代码:
PHP(回声HTML表格)
echo "<span id=\"about_me\">".$row['aboutme']."</span><span style=\"font-size:10px;\"><a id=\"popup\">Edit</a></span></p>
<form style\"display:none;\" method=\"post\">
<textarea rows=\"5\" cols=\"31\" id=\"area\" name=\"about_update\" style=\"display:none\" placeholder=\"Type 140 characters or less and press submit.\"></textarea>
<input style=\"display:none;\" type=\"submit\" id=\"aboutsubmit\" value=\"Submit\" />
</form>";
PHP
if (isset($_POST['about_update'])) {
$about_update = $mysqli->real_escape_string($_POST['about_update']);
$update = "UPDATE tbl_name SET aboutme='$about_update'
WHERE firstname='$firstname' && lastname='$lastname'";
$mysqli->query($update);
}
除了使用撇号之外,它都能正常运行,它会在它前面放置一个\
。 MySQL中aboutme
行的类型是TEXT btw。为什么textarea会生成此\
?
答案 0 :(得分:1)
如果您无法访问php.ini文件,则以下函数应该有效:
function escapeString($value){
global $mysqli;
if(get_magic_quotes_gpc()){
$value=stripslashes($value);
}
$value=$mysqli->real_escape_string($value);
return $value;
}
确保在打开数据库连接后放置该功能:)
而不是你的
$mysqli->real_escape_string();
把
$someVariable=escapeString($variableYouWantToEscspe);
希望这有效!
编辑:正在发生的事情是撇号被魔术引用一次性转义,然后转义的字符串被real_escape_string函数再次转义。你想要做的是只有当魔术引号插入它们时才删除任何反斜杠(首先是if语句)然后转义字符串,或者如果魔术引号没有打开,只需转义字符串:)