Только один раз - PullRequest
       17

Только один раз

0 голосов
/ 23 марта 2011

Моя таблица состоит из 100 различных имен, все уникальные и все имеют первичный ключ, который является числом от 1 до 100.

Как начать с первого и вызвать функцию для каждого имени, убедившись, что оно используется только один раз, после каждого имени оно начинается снова с одного и повторяется 5 раз.

Как мне это сделать?

Ответы [ 2 ]

3 голосов
/ 23 марта 2011

Если все имена сами по себе уникальны, вам не нужно беспокоиться о проверке, было ли имя вызвано, потому что оно будет существовать только один раз в вашем наборе записей.

Если все, что вам нужно, это имя и идентификатор вашей функции, а общее количество имен не слишком велико (например, упомянутое вами ~ 100), тогда проще всего сначала просто извлечь их все в память, чтобы выне нужно иметь дело с курсором БД или повторным запросом.

PDO Пример:

$db = new PDO($dsn, $username, $password);

// fetch all records returning an array like:
// array($id => $name)
$names = $db->query('SELECT id, name FROM tablename')->fetchAll(PDO::FETCH_KEY_PAIR);

for($i = 0; $i < 5; $i++)
{
   foreach($names as $id => $name)
   {
     myfunction($id, $name); // call your function
   }
}

Mysqli Пример:

$db = new Mysqli($host, $username, $password, $dbname);
$result = $db->query('SELECT id, name FROM tablename');

if($result)
{
  $names = $result->fetch_all(MYSQLI_ASSOC);
  $result->free();

  for($i = 0; $i < 5; $i++)
  {
     foreach($names as $j => $row)
     {
       myfunction($row['id'], $row['name']); // call your function
     }
  }
}
0 голосов
/ 23 марта 2011

http://codeigniter.com/user_guide/database/index.html

$this->db->select('id, name');
$query = $this->db->get('mytable');
for($i =0; i<5; i++){
foreach ($query->result_array() as $row)
{
    /* you can use $row['id'] and $row['name']
     and pass them as arguments your function 
   */
}

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