首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在表单输入上使用PHP _POST从MySQL数据库中检索学生信息

无法在表单输入上使用PHP _POST从MySQL数据库中检索学生信息
EN

Stack Overflow用户
提问于 2016-02-25 07:53:47
回答 3查看 74关注 0票数 0

我正在制作一个简单的web应用程序,其中我的一个数据库表中有两列,ID和User。

在一个文件中,我有一个表单,我在其中输入一个名称。

问题是我总是从数据库中得到零结果。但是,如果我修改代码以_POST该学生的ID,那么我将从数据库中获得结果。所以,如果我使用表单输入姓名而不是ID,我就不明白为什么它不起作用。

这是我的表格:

代码语言:javascript
复制
 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文件上:

代码语言:javascript
复制
$student = $_POST['student'];
    // $student = (string)$student;
    echo $student; 
    echo '<br>';

    // Query DB for selected student
    $Tusers_SQLselect = "SELECT * FROM users WHERE users.User='".$student."';"; 

但我总是从数据库中得到零结果。如果我将查询中的最后一个子句更改为:

代码语言:javascript
复制
WHERE users.ID='".$student."';";

然后,假设我在表单中输入了一个有效的ID,我将从查询中返回结果。为什么我不能通过在表单中键入有效名称来获得结果?

EN

回答 3

Stack Overflow用户

发布于 2016-02-25 07:59:04

它应该是:

代码语言:javascript
复制
$Tusers_SQLselect = "SELECT * FROM users WHERE users.User='$student'"; 

您不需要连接$student,只需使用引号即可。

如果您的表列是users.User,这将会起作用。

只是一个提示:请记住防止MySQL注入。

票数 0
EN

Stack Overflow用户

发布于 2016-02-25 07:59:24

这很可能是因为您正在查询的列没有您期望的数据。通过使用SELECT * FROM users手动选择记录,验证您是否拥有正确的数据。

还要检查数据是否没有任何垃圾字符。试试这个:

代码语言:javascript
复制
select user,HEX(user) from users where user like '%Abdur%'

顺便说一句,您的代码容易受到SQL注入的攻击。您应该转义从$_POST数组读取的用户输入。

票数 0
EN

Stack Overflow用户

发布于 2016-02-25 09:37:23

尽管在我发布我的新手问题之前,我至少搜索了一个小时的答案,但我还是找不到一个对我有帮助的答案。然而,我又重新开始搜索,我在这篇文章中找到了答案:

mysql select not woking for varchar field

显然,我的列数据中有前导空格或尾随空格。

再次感谢您在前面的答案中提供了关于SQL注入的附注。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35615616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档