我在这里看了其他的例子,但其他人的语法与我的不同,所以我不知道在哪里放“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)
我在哪里添加该字符串?
答案 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);