1

如果我不使用 mysql_real_escape_string 函数,代码可以正常工作。但是这个函数什么也没返回!我读到问题可能是由于我没有 mysql 连接,但似乎并非如此!

请帮忙!

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

$title = mysqli_real_escape_string($_POST["title"]);
$comment = mysqli_real_escape_string($_POST["comment"]);
$type = $_POST["type"];
$time = date("Y-m-d H:i:s");


$sql="INSERT INTO posts
VALUES
('','$type','$time','$time','$title','$comment','0','0','0','0','0')";

if (!mysqli_query($con,$sql))
  {
  die('Error: ' . mysqli_error($con));
  }



mysqli_close($con);
header ("location: index.php");
?>
4

3 回答 3

9

您需要将连接传递给函数

$title = mysqli_real_escape_string($con, $_POST["title"]);
于 2013-07-24T16:24:54.267 回答
2

根据http://php.net/manual/en/mysqli.real-escape-string.php您需要传递两个参数,除非您使用面向对象的样式。您应该使用以下格式:

mysqli_real_escape_string ( $link , $escapestr )

$link 是: mysqli_connect() 或 mysqli_init() 返回的链接标识符

$escapestr 是:要转义的字符串。编码的字符为 NUL (ASCII 0)、\n、\r、\、'、" 和 Control-Z。

于 2013-07-24T16:29:56.110 回答
0

php.net 说
Procedural style
mysqli_real_escape_string ( mysqli $link , string $escapestr )
所以你需要将你的 $con 添加到它:
$title = mysqli_real_escape_string($con, $_POST["title"]);

于 2013-07-24T16:28:35.783 回答