我正在制作一个简单的web应用程序,其中我的一个数据库表中有两列,ID和User。
在一个文件中,我有一个表单,我在其中输入一个名称。
问题是我总是从数据库中得到零结果。但是,如果我修改代码以_POST该学生的ID,那么我将从数据库中获得结果。所以,如果我使用表单输入姓名而不是ID,我就不明白为什么它不起作用。
这是我的表格:
echo '<form name="postStudent" action="studentListCourses.php" method="post">';
echo 'Name:<br>
<input type="text" name="student">';
echo '<input type="submit" value="save"/>';
echo '</form>';然后在我使用的studentListCourses文件上:
$student = $_POST['student'];
// $student = (string)$student;
echo $student;
echo '<br>';
// Query DB for selected student
$Tusers_SQLselect = "SELECT * FROM users WHERE users.User='".$student."';"; 但我总是从数据库中得到零结果。如果我将查询中的最后一个子句更改为:
WHERE users.ID='".$student."';";然后,假设我在表单中输入了一个有效的ID,我将从查询中返回结果。为什么我不能通过在表单中键入有效名称来获得结果?
发布于 2016-02-25 07:59:04
它应该是:
$Tusers_SQLselect = "SELECT * FROM users WHERE users.User='$student'"; 您不需要连接$student,只需使用引号即可。
如果您的表列是users.User,这将会起作用。
只是一个提示:请记住防止MySQL注入。
发布于 2016-02-25 07:59:24
这很可能是因为您正在查询的列没有您期望的数据。通过使用SELECT * FROM users手动选择记录,验证您是否拥有正确的数据。
还要检查数据是否没有任何垃圾字符。试试这个:
select user,HEX(user) from users where user like '%Abdur%'顺便说一句,您的代码容易受到SQL注入的攻击。您应该转义从$_POST数组读取的用户输入。
发布于 2016-02-25 09:37:23
尽管在我发布我的新手问题之前,我至少搜索了一个小时的答案,但我还是找不到一个对我有帮助的答案。然而,我又重新开始搜索,我在这篇文章中找到了答案:
mysql select not woking for varchar field
显然,我的列数据中有前导空格或尾随空格。
再次感谢您在前面的答案中提供了关于SQL注入的附注。
https://stackoverflow.com/questions/35615616
复制相似问题