Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL\u real\u escape\u字符串不添加斜杠?_Php_Mysql_String_Escaping - Fatal编程技术网

Php MySQL\u real\u escape\u字符串不添加斜杠?

Php MySQL\u real\u escape\u字符串不添加斜杠?,php,mysql,string,escaping,Php,Mysql,String,Escaping,所以我这样做: <?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_que

所以我这样做:

   <?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);
    ?>
m_r_e_s()返回转义值,它不修改原始值

$int = mysql_real_escape_string($_POST['int']);

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

define('int', 'some totally wonky value');
以前,您访问的POST值可能是错误的,因为PHP会将其视为
$\u POST[一些完全不可靠的值]

m\u r\u e\u s()返回转义值,它不会修改原始值

$int = mysql_real_escape_string($_POST['int']);

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

define('int', 'some totally wonky value');

以前,您访问的POST值可能是错误的,因为PHP会将其视为
$\u POST[一些完全不可靠的值]

您在查询中没有使用mysql\u real\u escape\u字符串的结果。 尝试这样做:

$int = nl2br(mysql_real_escape_string($_POST[int]););

您没有在查询中使用mysql\u real\u escape\u字符串的结果。 尝试这样做:

$int = nl2br(mysql_real_escape_string($_POST[int]););
  • 你应该使用事先准备好的语句。与mysql_*函数相比,它有一个轻微的学习曲线,但从长远来看是值得的
  • 您应该引用字符串,比如$\u POST['int'],而不是$\u POST[int]
  • 在文件顶部放置错误报告(-1)
      • 你应该使用事先准备好的语句。与mysql_*函数相比,它有一个轻微的学习曲线,但从长远来看是值得的
      • 您应该引用字符串,比如$\u POST['int'],而不是$\u POST[int]
      • 在文件顶部放置错误报告(-1)
      我也尝试过使用带引号的$\u POST['int'],但也失败了。我也尝试过使用带引号的$\u POST['int'],但也失败了。但在数据库中,数据仍然没有被替换。为什么?因为转义是作为进入数据库的一部分被删除的。在构建SQL语句时,转义仅对实际查询部分有用。在那之后,MySQL确切地知道东西在哪里,“顽皮”的值是不可能泄露出去的。在一种模糊的方式中,逃跑就像囚犯在设施之间转移时被铐上的手铐。一旦犯人进了新监狱,手铐就被移除了。所以数据仍然是安全的,即使我看不到斜线?@Marc,我已经自由地在论点周围添加了引号,我想你已经忘记了。但是在数据库中,数据仍然没有被替换。为什么?因为转义是作为进入数据库的一部分被删除的。在构建SQL语句时,转义仅对实际查询部分有用。在那之后,MySQL确切地知道东西在哪里,“顽皮”的值是不可能泄露出去的。在一种模糊的方式中,逃跑就像囚犯在设施之间转移时被铐上的手铐。一旦犯人进了新监狱,手铐就会被移除。所以数据仍然是安全的,即使我看不到斜线?@Marc,我已经自由地在论点周围添加了引号,我想你已经忘记了。