Проблема с циклом while - PullRequest
       18

Проблема с циклом while

0 голосов
/ 14 сентября 2011

Мой запрос ничего не возвращает для моего второго индекса. Он всегда отправляет мне сообщение Notice: Undefined offset: 1. Я попытался сделать с a, потому что это тот же результат, поэтому я прочитал, что моя проблема в запросе, кто-то сказал мне, что $stmt будет null для освобождения ресурсов моего утверждения. Я не знаю, что не так.

Это мои методы. Я не знаю, что кому-то сказать, используйте $database->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY,true);

Пример: $arrayDirectory[] = {'user1', 'user2'};

Это должно повториться 1 2, но просто печатает меня 1

for($i=0;$i<sizeof($arrayDirectory;$i++){ 
    $res[$i] = $obj->obtainID($arrayDirectory[$i]);

    echo $res[$i];
}

Это мой метод receiveID:

public function obtainID($user){
        $conexion = $this->objConexion->configuracion();
        $query = "CALL sp_xxx('$user')";
        $stmt = $conexion->prepare($query);
        $stmt->execute();
        $resultado = $stmt->fetchColumn();
        return $resultado;
    }

$stmi = null где?

Ответы [ 2 ]

4 голосов
/ 14 сентября 2011

Для одного,

 $arrayDirectory[] = {'user1', 'user2'};

- синтаксическая ошибка. { ... } не работает для массивов в PHP. Может быть, это просто опечатка, и вы путаете PHP с javascsript.

Но большая проблема - []. Это говорит PHP обрабатывать $arrayDirectory как массив (отлично), но PUSH как единственное значение, которое вы присваиваете.

Если ваш код действительно был:

$arrayDirectory[] = array('user1', 'user2');

Это создаст следующую структуру:

array(1) {
  [0]=>
  array(2) {
    [0]=>
    string(5) "user1"
    [1]=>
    string(5) "user2"
  }
}

Обратите внимание, что это двухуровневый массив. Одноэлементный массив верхнего уровня с индексом [0]. Этот элемент в 0 содержит ДРУГОЙ массив, который содержит два ваших имени пользователя.

Вы должны иметь это вместо:

$arrayDirectory = array('user1', 'user2');

$res = array();
foreach($arrayDirectory as $user) {
    $res[] = $obj->obtainID($user);
}
0 голосов
/ 14 сентября 2011

Прежде всего, вы не правы в своей функции, вы забыли добавить окончание ')' для функции sizeof, также не определены массивы с {}, вместо этого вы должны использовать array ().

и, наконец, вы делаете плохую практику там; Вы не должны вызывать функцию в цикле (sizeof ()), так как каждый раз, когда цикл проходит, она запускает функцию sizeof () и требует некоторого ресурса, поскольку sizeof ($ object) не изменится при использовании цикл, вы должны сохранить его в переменной

$sizeofobject = sizeof($object);

и используйте эту переменную в цикле

...