在这段代码中放置“mysql_real_escape_string”的位置?

时间:2012-01-28 05:09:28

标签: php mysql escaping

我在这里看了其他的例子,但其他人的语法与我的不同,所以我不知道在哪里放“mysql_real_escape_string”。 这是我目前的代码:     

include("dbconnect.php");

mysql_select_db("scratch", $con);

$sql= "INSERT INTO stories (author, story_name, story)

VALUES 
('$_POST[author]','$_POST[story_name]', '$_POST[story]')";


if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "Story Submitted!";

mysql_close($con)

我在哪里添加该字符串?

3 个答案:

答案 0 :(得分:2)

您需要转义您在查询中包含的任何变量值。因此,在您的代码中,这些将是:

  • $_POST['author']
  • $_POST['story_name']
  • $_POST['story']

因此,请将您的$sql变量更改为:

$author     = mysql_real_escape_string($_POST['author']);
$story_name = mysql_real_escape_string($_POST['story_name']);
$story      = mysql_real_escape_string($_POST['story']);

$sql= "
INSERT INTO stories (author, story_name, story)
VALUES ('$author','$story_name', '$story')
";

使用isset变量时,您可能还应添加empty$_POST项检查,以避免在不存在时发出通知。最后,使用PDO准备好的语句比使用不太健壮的mysql扩展名更好。

答案 1 :(得分:1)

//以这种方式使用QUERY将与mysql_real_escape_string正确运行

$sql= 'INSERT INTO stories (author, story_name, story)
   VALUES  
   ('.mysql_real_escape_string($_POST[author]).',
     '.mysql_real_escape_string($_POST[story_name]).',
     '.mysql_real_escape_string($_POST[story]).')';

答案 2 :(得分:0)

将POST变量放入新变量然后应用mysql_real_escape_string,最后将新变量放入SQL语句

以下是代码:

include("dbconnect.php");

mysql_select_db("scratch", $con);
$author = mysql_real_escape_string($_POST[author]);
$story_name = mysql_real_escape_string($_POST[story_name]);
$story=mysql_real_escape_string($_POST[story]);

$sql= "INSERT INTO stories (author, story_name, story)

VALUES 
('$author','$story_name', '$story')";


if (!mysql_query($sql,$con))
{
 die('Error: ' . mysql_error());
 }
echo "Story Submitted!";

mysql_close($con);
相关问题