我正在寻找一些关于哪种方法更安全,更有效使用的建议。
选项A:我有一个名为calendar的数据库,里面有12个表 - “January”,“February”等。每个月都有自己的.php页面,其中包含“select * from jan”等。我有一个下拉菜单,当用户选择例如“1月”时,我有一个ajax脚本然后将jan.php加载到div“currentmonth”
我在考虑做什么,因为除了“currentmonth”div之外,我还有一个“最近添加”的div显示按时间戳排序的最后3个条目。我不确定如何在整个数据库中显示最近添加的3个条目,所以我尝试了选项B.
选项B:我有一个名为calendar的表,每行都有一个名为month的列。这使得显示最近添加的内容变得更加简单,但我不确定如何实现下拉菜单。从我读到的想法,我可以让我开放sql注入。
这是一个想法:我有一个名为“selectedmonth”的jquery变量,它等于所选月份的值。然后我想取这个变量...例如,用户选择“1月”,该值为“jan”,我希望sql语句然后用SELECT * FROM calendar WHERE months =“jan”更新,但正如我所说,我听说这可以让我对SQL注入保持开放态度。
是否有动态更新SQL语句,可能使用AJAX或JSON?有没有办法做OPTION B而不让自己开放SQL注入?或者,我是否有更简单的方法来使用OPTION A,并且能够在整个数据库中找到最近添加的3个行?
我想知道的一件事是使用选项A,我显然会有12个“月”.php文件,这会增加很多页面加载时间吗?
非常感谢任何建议。
答案 0 :(得分:0)
使用准备好的陈述,你应该没事。第二种选择是可取的,第一种选择不是一个好主意......
你要做的就是:
$row = $conn->prepare("SELECT * FROM calendar WHERE months = ?");
$row->bind_param('s', $_GET['month']);
$row->execute();
$row = $row->get_result();
你将免费注入SQL。 Read more here.