3

我有通过 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);
}

除了使用撇号时,它都可以正常工作,它会\在其前面放置一个撇号。aboutmeMySQL 中行的类型是 TEXT btw。为什么 textarea 会生成这个\

4

1 回答 1

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 语句)然后转义字符串时删除任何反斜杠,或者如果魔术引号未打开,只需转义字符串:)

于 2012-11-25T23:53:53.600 回答