Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MSSQL引用PHP数组_Php_Sql Server - Fatal编程技术网

从MSSQL引用PHP数组

从MSSQL引用PHP数组,php,sql-server,Php,Sql Server,使用MSSQL和PHP,我正在编写一个日历表单,其中列出了用户日程安排中的时间,并允许用户输入自己是否忙、是否有空等 一旦用户提交信息,它就会保存到数据库中 如果用户返回表单,他应该看到表单字段默认为他已经输入的值 好的,所以我可以查询数据库中的每一天和时间段,并使用结果确定表单上显示的内容……但这是对数据库的145次调用,因为这是用户一周可以拥有的时间段数 似乎应该有一种方法可以查询数据库一次,将145个结果存储在一个数组中,然后按天和时间查询每个字段的数组 所以我有: $sql="SELEC

使用MSSQL和PHP,我正在编写一个日历表单,其中列出了用户日程安排中的时间,并允许用户输入自己是否忙、是否有空等

一旦用户提交信息,它就会保存到数据库中

如果用户返回表单,他应该看到表单字段默认为他已经输入的值

好的,所以我可以查询数据库中的每一天和时间段,并使用结果确定表单上显示的内容……但这是对数据库的145次调用,因为这是用户一周可以拥有的时间段数

似乎应该有一种方法可以查询数据库一次,将145个结果存储在一个数组中,然后按天和时间查询每个字段的数组

所以我有:

$sql="SELECT * FROM committee_employee_schedules WHERE fac_id = $user_id";
$result= mssql_query($sql,$conn);
但从这里开始,我不想使用mssql_fetch_array()进入while循环……我该如何查询结果集呢?谢谢

下面是一些示例代码,因为我似乎无法沟通:

<form>
<label for="7:30AM">7:30AM</label>
<select name="7:30AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>

<label for="8:00AM">8:00AM</label>
<select name="8:00AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>

<label for="8:30AM">8:30AM</label>
<select name="8:30AM">
<option>Available</option>
<option>Class</option>
<option>Office Hours</option>
</select>
</form>

上午7:30
可用
等级
办公时间
上午八点
可用
等级
办公时间
上午8:30
可用
等级
办公时间
…这将持续到周一至周五晚上9:30,总共有145个下拉字段

每个字段都需要知道表中是否存在该时隙的行,如果存在,请选择适当的活动


我可以使用上面的代码为用户获取所有记录,但是我是否必须为表单上的每个字段循环这145行?难道没有办法将记录粘贴到一个数组中,并用结果['Monday']['7:30'][Activity]或其他什么引用它吗?

因此,您从数据库中获得了145条记录。SELECT查询的结果将存储在一个数组中,您必须使用循环对其进行迭代。这个循环可以从记录中读取日期和时间段,并将其存储到适当的数组中。稍后,您可以按照自己的方式引用该新数组。我将试着在下面列出一个大致的例子

<?php
    slotData = array();//Store your results here the way you want to, see down below

    $sql="SELECT * FROM committee_employee_schedules WHERE fac_id = $user_id";
    $result= mssql_query($sql,$conn);
    while($row = mssql_fetch_row($result)) {
        $day = $row['day'];//Guessing your column name here
        $time = $row['time_of_day'];//again, guessing your time here
        $slotData[$day][$time] = $row;
        //this all assumes "$day" looks like "monday", "tuesday", etc.
        //also assumes "$time" looks like "8:00AM", "9:30PM", etc.
    }

    //now that data is in array the way you want, reference it later
    //Assume you are currently trying to populate Monday at 8am position in calendar...
    $curDay = 'monday';
    $curTime = '8:00AM';
    $data = $slotData[$curDay][$curTime];
    //Yeay! "$data" now has all of the information for Monday at 8am.
?>


底线是,遍历数据库结果集,并将数据移动到不同数组的适当插槽中,具体取决于数据应该放在哪里。然后,以后可以随意引用不同的数组,而不用担心每次都要遍历所有原始记录。已解决。

为什么不循环?有没有比循环145次145个结果,检查行是否符合我的日期和时间标准,然后获取其值更有效的方法?作为一种旁白,您应该尽量避免
选择*
,而是指定字段列表。这将有助于代码的性能和将来的维护。为什么要循环145次?难道你不想在所有记录中循环一次,然后对每个记录做你需要做的事情吗?您希望如何准确地显示结果?我在这个表单中有145个选择下拉字段,每个时间段一个。表单不是通过循环数据库表来构建的。但它引用了表格。如果用户保存了该时间段的记录,我需要获取他的可用性。如果我遍历145个表行中的每一行来找到我想要的一个,这似乎需要大量的资源。这是有效的,只是在我使用mssql\u fetch\u行时它没有返回任何内容。它与mssql_fetch_数组一起工作…不确定为什么会有差异。非常感谢。我只使用mysql,所以我不太精通mssql。很高兴我能帮上忙,而且你认识到了那一点零钱。