首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL_real_escape_string没有添加斜杠吗?

问MySQL_real_escape_string没有添加斜杠吗?
EN

Stack Overflow用户
提问于 2011-07-09 01:13:49
回答 3查看 611关注 0票数 1

所以我这样做:

代码语言:javascript
复制
   <?php
    session_start();
    include("../loginconnect.php");
mysql_real_escape_string($_POST[int]);
    $int = nl2br($_POST[int]);
    $query = "UPDATE `DB`.`TABLE` SET `interests`='$int' WHERE `user`='$_SESSION[user]'";
    mysql_query($query) or die(mysql_error());
    mysql_close($con);
    ?>

假设$_POSTint是"Foo‘bar“。单引号仍然没有转义,并且在运行脚本时,由于引号的原因,我得到了一个MySQL错误。怎么了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-09 01:15:50

m_r_e_s()返回转义值,它不修改原始值。

代码语言:javascript
复制
$int = mysql_real_escape_string($_POST['int']);

$query = "UPDATE ... interests = '$int' ...";

请注意,我在POST值中的int两边添加了引号。如果没有引号,PHP会将其视为常量值(例如define())。如果找不到该名称的常量,它会礼貌地假定您打算将其用作字符串,并进行相应的调整,但会发出警告。如果你做了

代码语言:javascript
复制
define('int', 'some totally wonky value');

以前,您将访问错误的POST值,因为PHP会将其视为$_POST[some totally wonky value]。

票数 2
EN

Stack Overflow用户

发布于 2011-07-09 01:16:31

您没有在查询中使用mysql_real_escape_string的结果。试着这样做:

代码语言:javascript
复制
$int = nl2br(mysql_real_escape_string($_POST[int]););
票数 2
EN

Stack Overflow用户

发布于 2011-07-09 03:04:23

  • 您应该使用预准备语句。与mysql_*函数相比,它有一个轻微的学习曲线,但从长远来看,这是非常值得的。
  • 你应该引用你的字符串,比如$_
  • ‘

’而不是$_POSTint。

  • 在你的文件的顶部放置‘int
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6627971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档