为什么mysql_real_escape_string在这段代码中不起作用?

时间:2016-08-12 06:39:46

标签: php mysql-real-escape-string

为什么mysql_real_escape_string无法使用此代码?

通常情况下,加载页面输入将如下所示。

http://image.free.in.th/v/2013/ie/160812064246.jpg

但是当您加载页面www.example.com/test.php?value_1=">

为什么输入看起来像这样。

http://image.free.in.th/v/2013/ia/160812064312.jpg

我该怎么办?

test.php的

<?PHP
include("connect.php");
$ex_search_value = mysql_real_escape_string($_GET['value_1']);
?>

<input placeholder="PLEASE ENTER" value="<?PHP echo $ex_search_value; ?>" style=" margin: 0px; width: 810px;height: 33px;line-height: 17px;line-height: 33px\0;^line-height: 33px;padding: 0px;margin-right: -1px;padding-left: 5px;-webkit-box-shadow: 0 2px 3px rgba(0,0,0,0.1);-moz-box-shadow: 0 2px 3px rgba(0,0,0,0.1); box-shadow: 0 2px 3px rgba(0,0,0,0.1); ">

2 个答案:

答案 0 :(得分:1)

mysql_real_escape_string转义数据,因此您可以安全地将其放入SQL查询中,然后发送给MySQL。 (注意:mysql_real_escape_string is part of an obsolete API you should have stopped using about half a decade ago。)

value="<?PHP echo $ex_search_value; ?>" 

那不是SQL。那就是你发送到网络浏览器的HTML。

HTML是与SQL不同的语言。逃避规则是不同的,甚至没有微妙的不同,它们是完全不同的。

您需要使用htmlspecialchars()来转义数据,以便适合插入HTML。

答案 1 :(得分:-2)

不推荐使用mysql API,你真的不应该使用它来尝试使用mysqli

这是语法 mysqli_real_escape_string(connection,escapestring); 它需要连接对象和你想要转义的字符串

这是一个很好的例子

<?php
   $con=mysqli_connect("localhost","my_user","my_password","my_db");
   // Check connection
   if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
   }

  // escape variables for security
  $firstname = mysqli_real_escape_string($con, $_POST['firstname']);
  $lastname = mysqli_real_escape_string($con, $_POST['lastname']);
  $age = mysqli_real_escape_string($con, $_POST['age']);

  $sql="INSERT INTO Persons (FirstName, LastName, Age)
  VALUES ('$firstname', '$lastname', '$age')";

  $query = mysqli_query($con, $sql);

  if (!mysqli_query($con,$sql)) {
    die('Error: ' . mysqli_error($con));
  }
  echo "1 record added";
  mysqli_close($con);
?>