Поиск массива для значений из базы данных - PullRequest
0 голосов
/ 18 октября 2010

У меня есть база данных, заполненная идентификаторами сотрудников и соответствующими именами сотрудников для каждого сотрудника. Есть ли способ найти массив идентификаторов сотрудников из базы данных? Google не помогает мне, я думаю, потому что я не знаю, как сформулировать мой поиск.

Моя идея состоит в том, чтобы иметь что-то вроде array_search ($ empID, $ currentArray). А затем переберите каждый идентификатор сотрудника из базы данных и сравните его с $ currentArray? Я сомневаюсь, что это самый эффективный способ, но я все еще учусь, поэтому любая помощь будет оценена. Если кто-то захочет помочь мне с этим, я могу опубликовать любую необходимую информацию. Спасибо!

Отредактируйте вот мой код, если кому-то интересно:

<code> <?php 

//this variable tells us how many drupal nodes or 'paystub pages' we need to create
$nodeCount = 0;
$i = 0;

//needed for creating a drupal node
//for this code to work this script must be run from the root of the drupal installation
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

if ($handle = opendir('/var/www/html/pay.mistequaygroup.com/upload')) 
{

    /* This is the correct way to loop over the directory. */
    while (false !== ($file = readdir($handle))) 
    {
       if ($file != "." && $file != "..") 
       {
            $nodeCount++;
            //We convert the pdf documents into text documents and move put them in the converted folder
            $command = "pdftotext /var/www/html/pay.mistequaygroup.com/upload/" . $file . " /var/www/html/pay.mistequaygroup.com/upload/converted/" . $file . ".txt";
            //Execute the command above
            $output = exec($command);

            //mark all the spots that TO THE ORDER OF shows up
            //echo array_search("TO THE ORDER OF", $currentArray);

            //echo $userName;


            //extract the employees name


            //print_r($currentArray);
            //echo '<pre>';
            //echo array_search("DATE AMOUNT", $currentArray);
            //echo '
'; } } closedir ($ ручка); } // вычитаем два, потому что папки «массив» и «преобразованные» включены, потому что PHP не различает // между папками и файлами $ nodeCount = $ nodeCount - 2; echo "
"; echo "Я посчитал $ nodeCount pdf файлы"; echo "
"; // открыть каталог if ($ handle2 = opendir ('/ var / www / html / pay.mistequaygroup.com / upload / convert')) { // проверяем, достигли ли мы последнего файла нашего каталога, если не остаемся в цикле while (false! == ($ currentText = readdir ($ handle2))) { // отфильтровать файлы с именем. а также .. if ($ currentText! = "." && $ currentText! = "..") { // Создать файл для массива, который будет напечатан $ createArray = fopen ("/ var / www / html / pay.mistequaygroup.com / upload / arrays /". $ currentText. ".txt", "w +") или die ("Не удается найти файл для создания массива, ID 2 «); // читаем файл из цикла в массив $ currentArray = file ("/ var / www / html / pay.mistequaygroup.com / upload / convert /". $ currentText, FILE_SKIP_EMPTY_LINES) или die ("Не удается найти файл для создания массива, ID 1"); // $ countArray = array_search (".........., $ currentArray); // echo $ countArray; // распечатать массив в файл .txt для отладки $ out = print_r ($ currentArray, true); fwrite ($ createArray, $ out); fclose ($ createArray); // Цикл? array_search ($ empID, $ currentArray); // нужно перебрать массив, в котором мы находимся, ища числа, которые соответствуют идентификаторам сотрудников // ИЛИ, возможно, нам придется искать имена в текстовой строке и затем получать соответствующий идентификатор для этого пользователя из базы данных? // мозговой штурм $ query = SELECT * FROM `profile_values` WHERE` fid` = 2 AND `value` = $ employeeID; // НЕ РАБОТАЕТ, КАК ОЖИДАЕТСЯ $ indexEmpid = 0; foreach ($ currentArray как $ value) { // устанавливаем значение 28 и оно удваивается при каждом запуске цикла, поэтому нет необходимости каждый раз добавлять 28 // каждый 28-й индекс в нашем массиве является идентификатором сотрудника $ indexEmpid = $ indexEmpid + 28; $ currentEmployeeID = $ currentArray [$ indexEmpid]; echo "
"; echo "ID сотрудника найдены: $ currentEmployeeID"; // echo "ID сотрудника найдены: $ currentArray [$ indexEmpid]"; echo "
"; echo "IndexEmpid: $ indexEmpid"; } } } } ?>

Ответы [ 2 ]

1 голос
/ 18 октября 2010

Да, вы можете сделать это, используя предложение SQL IN как:

$empIDs = array(1,2,3);
$query = "SELECT name FROM emp WHERE ID IN (" . implode(',',$empIDs) . ")";
0 голосов
/ 18 октября 2010

использование: where employeeID in (id list......) (через запятую)

подробнее: Передача массива в запрос с использованием предложения WHERE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...