2013-08-04 4 views
0

Я пытаюсь показать результаты простого оператора выбора, используя PDOPDO ошибка, когда результаты Fetching

<?php 
    // Define and perform the SQL SELECT query 
    include('config.inc'); 
    $user = $_POST['user']; 
    $password = $_POST['password']; 


     $sql = "SELECT * FROM usuarios where user = '$user' AND password ='$password'"; 
     $stm = $db->prepare($sql); 
     $stm->execute(); 
     // here you go: 
     $users = $stm->fetchAll(); 

     foreach ($users as $row) { 
      print $row["user"] . "-" . $row["password"] ."<br/>"; 
     } 

    ?> 

И единственное, что я получаю ошибки, как это:

Undefined индекс: пользователь в C : \ wamp \ www \ proyect \ select.php в строке 16

Возможно, что-то очень просто, я мог бы не заметить в этом тесте, я работаю с php 5.3.5.

Это включаемый файл:

<?php 
      $dsn = 'mysql:host=localhost;dbname=carrito'; 
      $username = 'root'; 
      $password = 'root'; 

      try { 
       $db = new PDO($dsn, $username, $password); 
       $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      }catch (PDOException $e){ 
       $error_message = $e->getMessage(); 
       //include('db_error.php'); 
       echo $error_mesage; 
       file_put_contents('PDOErrors.txt', $e->getMessage(), FILE_APPEND); 
       exit(); 
      } 
?> 
+0

Почему вы вставляете свои переменные напрямую, когда используете 'prepare()' ?? Вы должны использовать заполнители и положить '$ user' и' $ password' в свой 'execute()' – Sean

+0

Если у вас есть 'Undefined index: user', вы не отправляете поле с именем' user'. Вы уверены, что это ваше имя? Может ли это быть «имя пользователя»? Чтобы найти ошибку, PDO взгляните на этот ответ - http://stackoverflow.com/a/15990858/689579 – Sean

+0

Разве я не сказал, что это тест? Это не похоже на то, что я использую его в реальном мире ... Я просто хочу, чтобы он показывал некоторые результаты. Конечно, я знаю о привязке параметров. – Carlos

ответ

0

Если я могу догадаться:

у вас есть PDO::CASE_UPPER набор , http://www.php.net/manual/en/pdo.constants.php
или название вашей колонки просто просто естественно.

Но ... перестаньте удивляться и начинайте расследование. Просто сделайте

var_dump($users); 

, чтобы узнать, что у вас есть.

+0

* self-facepalm * Это единственная кровавая вещь, в которой я не двигался в проблеме, которая имеет значение. Я пытался ... сделать так просто, чтобы кто-то ... сделал конструктивный комментарий. Спасибо вам, что вы тот человек. – Carlos

-1

Снимите:

$users = $stm->fetchAll(); 

     foreach ($users as $row) { 
      print $row["user"] . "-" . $row["password"] ."<br/>"; 
     } 

И попробуйте это:

while($row = $stm->fetch(PDO::FETCH_ASSOC)){ 
    print $row["user"] . "-" . $row["password"] ."<br/>"; 
} 
+0

Нет кубиков ... Это раздражает, потому что я просто сделал это без PDO, и это сработало ... как только я начал с PDO, это произошло. – Carlos