2013-05-12 6 views
0

Я искал и искал, но не могу найти то, что я делаю неправильно, так что вот мой первый вопрос StackOverflow.pdo query работает только в первый раз

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

Имя: Волк, Дмитрий

второй попытки к такому же запросу:

база данных не выбрана

из этого кода:

$entity_id=1; 
$row = getEntityById($entity_id); 
echo "<p>name:" . $row['entity_name'] . "</p>"; 

echo "<p>second try to same query:</p>"; 
$row = getEntityById($entity_id); 
echo "<p>name:" . $row['entity_name'] . "</p>"; 

function dbConnect() 
{ 
    require_once ('dogs.php'); 
    try { 
     $conn = new PDO("mysql:host=$host;dbname=$db", $user, $pwd); 
     return $conn; 
    } catch (PDOException $e) { 
     return null; 
    } 
} 

function getEntityById ($id) 
{ 
    unset($conn); 
    $conn=dbConnect(); 
    $sql = "select * from entity where id = $id"; 
    $result = $conn->query($sql); 
    $error = $conn->errorInfo(); 
    if (isset($error[2])) die($error[2]); 

    $numRows = $result->fetchColumn(); 
    $result->closeCursor(); 

    $theRow = null; 
    foreach ($conn->query($sql) as $row) { 
     $theRow = $row; 
    } 

    return $theRow; 
} 

Я понятия не имею, что я делать неправильно. Закрыть Курсор, похоже, не помогает. У кого-нибудь есть идеи? Спасибо.

+0

Я думаю, что это может быть из-за исключение .. отладить исключение брошены .. только выход в $ е стеку и подтвердить, если у вас есть исключение, если вы пытаетесь подключиться снова DB .. – Dinesh

ответ

1

Дмитрий, просто измените require_once ('dogs.php'); требовать («dogs.php»);

Проблема заключается в том, что вам требуется файл dogs.php каждый раз, когда вы вызываете функцию, однако, как вы, возможно, знаете, require_once вызывает только один раз за время выполнения. Просто измените его и должно хорошо работать.

Приветствия,

+0

Fabulous. Спасибо, медина! –

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