我看到这个问题被问了很多次,但我对这些回答感到有些困惑。我希望有人可以请看看下面的代码并帮助我如何将包含撇号的文本插入到MySQL数据库中。可能包含撇号的两件事是 full_desc 和 meta_desc 。谢谢!
另外,我意识到这很容易发生MySQL注入,因此任何关于保护它的指针也将非常受欢迎。再次感谢!
<?php
$con=mysqli_connect("mysql.legfly.com","username","password","database");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//sql
$sql="INSERT INTO races (event_name, event_date ,start_time, entry_fee, sanctioned,location, address, city, state, zipcode, country, sport, special_info, distance, race_url, reg_url, print_url, event_phone, event_email, meta_desc, full_desc, course_info, directions, other_info, perma_url, perma_year)
VALUES
('$_POST[event_name]','$_POST[event_date]','$_POST[start_time]','$_POST[entry_fee]','$_POST[sanctioned]','$_POST[location]','$_POST[address]','$_POST[city]','$_POST[state]','$_POST[zipcode]','$_POST[country]','$_POST[sport]','$_POST[special_info]','$_POST[distance]','$_POST[race_url]','$_POST[reg_url]','$_POST[print_url]','$_POST[event_phone]','$_POST[event_email]','$_POST[meta_desc]','$_POST[full_desc]','$_POST[course_info]','$_POST[directions]','$_POST[other_info]','$_POST[perma_url]','$_POST[perma_year]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
echo "Your race is added!";
mysqli_close($con); ?>
再次感谢!
答案 0 :(得分:0)
如果在撇号之前添加反斜杠,它将转义它,因此它被视为文本而不是查询的一部分。
E.g。 INSERT INTO tablename(id,text)VALUES('0','This row \'s first')
这只是如何插入撇号的一个例子。对于更加编程的方法,mysqli_real_escape_string / mysql_real_escape_string在您在查询中使用它们之前就可以处理字符串。