2014-12-17 3 views
-1

Я написал функцию в php, которая возвращает все значения в таблице. но проблема с моим кодом. когда я запустить эту функцию в еще он говорит, что ошибка «Не определено смещение: 0» Так что, если какой-либо один есть идея об этом, пожалуйста, дайте мне знать, что это и как я могу это исправить спасибоНеопределенное смещение: 0 в php

//Select All function 
protected function selectAll($action, $tablename, $where = array()){ 
    try{ 
     $query = $this->_pdo->prepare("{$action} FROM {$tablename} WHERE {$where[0]} {$where[1]} ?"); 
     $query->bindValue(1, $where[2]); 
     $query->execute(); 
     $result = $query->fetchAll(PDO::FETCH_OBJ); 
     return $result[0]; 
    } 
    catch(PDOException $e){ 
     echo $e->getMessage(); 
    } 
} 
+0

Ваш $, где массив заполняется данными? Это всегда будет работать, если массив where пуст. Также, если $ result пусто от c. –

+0

http://stackoverflow.com/questions/7460639/why-do-i-get-undefined-offset-0 – bemol

+0

Возможно, строк не было найдено? –

ответ

2

Вы должны добавьте проверку, чтобы убедиться, что массив $where всегда содержит как минимум 2 элемента. Также используйте fetch() для запроса только одной строки.

Пример:

$result = $query->fetch(PDO::FETCH_OBJ); // One result 

Ваше решение:

protected function selectAll($action, $tablename, $where = array()){ 

    try{ 

    if(!count($where) < 2) { 
     throw new PDOException('Invalid where filter'); 
    } 

    $query = $this->_pdo->prepare("{$action} FROM {$tablename} WHERE {$where[0]} {$where[1]} ?"); 
    $query->bindValue(1, $where[2]); 
    $query->execute(); 

    // More than one result 
    $result = $query->fetchAll(PDO::FETCH_OBJ); 
    return $result; 

    } 
    catch(PDOException $e){ 
    echo $e->getMessage(); 
    } 
} 
+0

, пожалуйста, дайте мне знать Что вы имеете в виду от%, где массив содержит 2 элемента всегда , если –

+0

@ChathuraBuddika, так как для функции требуется два элемента из массива '$ where', нам нужна проверка, чтобы убедиться в этом, используя функция 'count()' – anp

Смежные вопросы