此问题已在此处有答案:
How can I prevent SQL injection in PHP?(27回答)
3天前关闭。
我试图从两个不同的表中获取数据,方法是在搜索表单中输入学生ID,然后从第一个表中获取ID、Name,并将其与第二个表中的Address进行匹配。
如果我使用表单中的搜索结果,查询不会返回任何内容。
$sql = "SELECT Students.StudentID, Students.StudentName, HomeADD.StudentADD
FROM Students
INNER JOIN HomeADD
WHERE Students.StudentID = '%$searchq%'
AND HomeADD.StudentID = '%$searchq%'";
$result = mysqli_query ($conn,$sql);
$count = mysqli_num_rows ($result);
$none = "";
为了测试这个查询,我将$searchq替换为文本J34765,现在它可以工作了。
$sql = "SELECT Students.StudentID, Students.StudentName, HomeADD.StudentADD
FROM Students
INNER JOIN HomeADD
WHERE Students.StudentID = 'J34765'
AND HomeADD.StudentID = 'J34765";
$result = mysqli_query ($conn,$sql);
$count = mysqli_num_rows ($result);
$none = "";
为了进一步测试,我使用echo输出$searchq以确保它被正确捕获。我不明白为什么使用搜索结果的查询不起作用。预期结果如下。
Student ID Student Name Student Address
---------- --------------- -----------------------------------
J34765 John Doe 123 Main Street, Fresno, California
1条答案
按热度按时间wmomyfyw1#
看起来问题在于如何在
WHERE
部分中使用'%$searchq%'。您应该使用LIKE
而不是=。但在这种情况下,您不需要找到模式。只需将=与变量$searchq一起使用,而无需在其周围放置百分号。或者,如果确实需要搜索模式,请使用
LIKE