mysql查询创建数组_用PHP中的MySQL查询创建简单数组

博客作者正在尝试从MySQL数据库中获取一维数组,用于验证用户登录。他们已经创建了一个逻辑流程,包括数据库连接、IP匹配、员工下拉列表、登录表单验证等步骤。遇到的问题是,从数据库查询中获取的数组不是期望的一维数组,而是包含额外信息的多维数组。作者尝试使用`in_array()`函数来验证用户ID,但发现这只能在选择第一个下拉选项时工作。他们寻求简化数组并优化验证过程的方法。
摘要由CSDN通过智能技术生成

对于那些不想阅读非常详细和具体信息的人来说,最简单形式的基本问题是:

如何从SQL查询中获取多维数组并将其转换为简化的内容,只需使用以下值信息即可: array(1,2,3,4,5,6,7,8,9)

我如何从PHP中的SQL查询创建一个简单的1维数据库?

这比我的理解更多,而不是实时代码 . 我一直在玩PHP和MySQL,我的大脑想出了我认为是一个合乎逻辑的想法 . 我打算把它打破,因为我在脑子里,所以你明白我来自哪里 .

目标:允许员工登录网站的私人部分

逻辑推理:

1.)创建脚本以连接到DB(完成)

2.)检查外部I.P.匹配业务I.P.还是有所不同?静态IP . 假设(完成)

3.)如果I.P.匹配,继续动态创建员工姓名下拉列表以供选择,"emp_id"存储为值,然后通过GET(完成)传递

4.)如果I.P.不匹配,提供登录表单 . 验证后,将$ ip设置为等于业务I.P.并继续下拉列表(完成)

5.)选择名称后,进入员工区域的主页面 . (完成)

6.)验证员工是否真正存在并确保URL未被篡改(问题)

现在我意识到这不是最安全或最好的路线,但我想理解为什么我的推理不起作用 . 我希望这个验证的原因是员工列表是动态的,而旧员工不能只在URL的user =“emp_id”部分输入id并获得访问权限 . 如果使用硬编码数组来存储emp_id而不是从数据库中获取一个,则可能会发生这种情况 . 因此,为了验证员工的存在,我选择了当时在我脑海中具有逻辑意义的东西 .

路线我采取:

include('inc/dbConnect.php');

//Store user id aka emp_id to variable from URL

$user = $_GET['user'];

$key = $_GET['key'];

//Grab data from database, create array, and step through storing emp_id values to said array.

$result = mysqli_query($dbconnect, 'SELECT emp_id FROM employee');

$data = mysqli_fetch_array($result);

$usercheck = array();

while($data = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

$usercheck[] = $data['emp_id'];

//Debugging only to see what array looks like

print_r($usercheck);

}

//Validate that employee id exists in generated array from database. If not boot them off immediately.

if(!in_array($user, $usercheck) || $key != 'Not Important'){

echo "";

} else {

// I did this so even if someone where to input wrong data, it wouldn't flash the html to them, or allow them to stop the page from loading as it flashed to see data etc. Plus I hate having to echo out html for a page bleh.

include('html content file here');

}

?>

正如您所看到的,我正在从上一个表单传递的URL中获取用户ID和密钥 . 关键在这一点上并不重要 . 我专注于用户ID的动态元素 .

所以我从MySQL数据库的emp_id创建一个数组,并希望使用该数组来检查存储在$ user中的变量 . 在线研究很多人建议使用in_array() . 所以我试了一下 . 当然,除非您在动态下拉列表中选择第一个条目,否则此功能非常有用 . 如果选择该选项,它将引导您返回索引页面以再次登录 . 除此之外,任何其他员工都登录,网址必须保持原样或者将您引导离开系统 .

我希望我的数组变得简单,像这样: $usercheck = array(1,2,3,4,5,6,7,8,9);

这样可以很容易地检查用户ID的值 . 但是,我发现数组比我的脚本实际创建的要复杂得多 . 它看起来像这样:Array from MySQL Database我看了看,看了看如何将这个数组存储为简单的东西,仅存储了emp_id的值,仅此而已 . 我不需要任何额外的东西,除了我的emp_id存储为一个非常简单的数组,用于验证从前一个表单传递的用户ID .

我知道这可能是一个愚蠢的简单,我错过了,只是没有 grab ,但我退了一步,想了想,并尝试了许多其他方法,无法让它按预期工作 . 那么我的逻辑在这里出了什么问题?我得到的代码是错误的,因为它不起作用,但为什么这比最初看起来更困难,因为在我的脑海里做一个看似简单的事情只返回一个只有值的数组而没有别的 .

在对此有任何憎恨并告诉我有更好的方法来做到这一点之前,这个代码很糟糕,它不安全,等我知道这一点 . 这都是假设的,我在开发服务器上运行代码,只是在我的午餐时弄乱它,试图看看我错过了什么 .

附:这适用于那些想要了解我如何创建动态下拉菜单的人:

echo '

';

echo '

';

echo 'Username';

echo '

';

echo '';

echo 'Select Name';

$result = mysqli_query($dbconnect, 'SELECT emp_id, emp_name FROM employee ORDER BY emp_name');

if($result) {

while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {

echo '' . $row['emp_name'] . '';

}

} else {

mysqli_connect_error();

}

echo '';

echo '

';

echo '

';

echo '';

echo '

';

echo '';

echo '

';

echo'

';
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值