2015-01-22 3 views
-1

Hy все, я не могу обернуть вокруг себя. Я пытаюсь получить некоторые данные из таблицы, используя PDO. это мой код:Проблемы с php-подключением к базе данных mySQL

//in db.php I have the connection: 

$host = 'localhost'; 
$db = 'APL'; 
$dbuser = ''; 
$pass = ' '; 

try{ 
$conn = new PDO("mysql:host=$host;dbname=$db", $dbuser, $pass); 
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch(PDOException $e) 
{ 
echo "Connection failed: " . $e->getMessage(); 
} 


//in my file I have this: 

$id = $_GET['id']; 
$sel_sql = "SELECT * FROM users WHERE id =:id"; 
$stmt = $conn ->prepare($sel_sql); 
$stmt -> bindParam(':id', $id); 
$stmt -> execute(); 
$result = $stmt -> fetchAll(PDO::FETCH_ASSOC); 

Проблема заключается в том, что print_r ($ результат) «1» возвращает (только значение 1, поэтому я не могу получить доступ к любым данным, хранящимся в таблице) до тех пор, как $ _SESSION [ «пользователь»]. Весь сбор данных работал нормально, если $ _SESSION ['user'] не установлен.

Может кто-нибудь объяснить, почему это происходит? (Я довольно новичок в этом, и я действительно пытаюсь понять, почему возникают некоторые проблемы).

Спасибо!

+2

Вы не используете '$ _SESSION ['user']' в любом месте фрагмента кода, поэтому ваша ошибка, вероятно, находится где-то в другом месте. –

+0

'fetchAll()' никогда не возвращает число, поэтому вы должны переписать свою переменную где-то еще. – jeroen

+0

Я знаю, что fetchAll() должен возвращать массив (на других страницах, тот же самый код возвращает то, что ожидается), поэтому я не знаю, почему он print_r ($ result), который помещен прямо под секцией кода, которую я опубликовал возвращает 1. –

ответ

0

Функция fetchAll должна возвращать либо массив, либо логическое значение FALSE.

Вы сообщаете, что print_r($result) отображает целочисленное значение 1.

Я не понимаю, как это возможно, если вы не назначая различные значения $result. Попробуйте переместить print_r($result), чтобы сразу же выполнить задание от fetchAll.

(Мое подозрение в том, что в настоящее время $result присваивается значение 1, в другом месте в коде, прежде чем сделать print_r. Если были «проблемы с PHP подключения к базе данных MySQL», мы бы ожидали увидеть PDO ошибка некоторого вида)


ПРИМЕЧАНИЕ. Я не думаю, что PDO::FETCH_ASSOC это определенный стиль выборки для функции fetchAll. (fetchAll имеет разные стили выборки, чем fetch.)

0

На всякий случай кто-то наткнулся на это, между переменной $ result и print_r ($ result) у меня был include_once(); (что было неправильно поставлено там в первую очередь).

Спасибо всем за ваши ответы.

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