2011-05-31 113 views
0

我遇到了以下问题,我似乎无法解决。我在下面的函数使用PDO与MySQL:PHP/PDO从会话变量数据库中选择数据

public function checkST($database) { 
     if (isset($_SESSION['user'])) { 
      $ticket = $_SESSION['user']['session_ticket']; 
      $check = $database->query("SELECT * FROM users WHERE session_ticket = 'ST-627eed61b0dcc8fe04068e23c9e9ace10fd59cf7-8104' LIMIT 1");   
      $result = $check->fetchColumn(); 
      var_dump($result); 
      if ($result != 1) { 
       header('Location: ../?p=login'); 
      } 
     } else { 
      header('Location: ../?p=login'); 
     } 
    } 


$ticket = $_SESSION['user']['session_ticket']; 
      $check = $database->query("SELECT * FROM users WHERE session_ticket = '".$ticket."' LIMIT 1");   
      $result = $check->fetchColumn(); 
      var_dump($result); 

回报:

布尔(假)

但是,当我插入我的会话票据,如:

$ticket = $_SESSION['user']['session_ticket']; 
      $check = $database->query("SELECT * FROM users WHERE session_ticket = 'ST-627eed61b0dcc8fe04068e23c9e9ace10fd59cf7-8104' LIMIT 1");   
      $result = $check->fetchColumn(); 
      var_dump($result); 

它返回:

string(1) "1" 

这是预期的结果。

回答

0

也不是那么清楚。不过试试这个:

$勾选= $数据库 - >查询( 'SELECT * FROM用户WHERE session_ticket =' $票“LIMIT 1' );

+0

这似乎不工作,太糟糕了。 – Fabian 2011-05-31 18:12:40

+0

只要有可能(大部分时间都是这样),我不带双引号,它们比单引号慢。 var dump sql插入行,我们在这里没有看到它,然后var dump select sql,所以我们确保插入和检索相同的东西! – Melsi 2011-05-31 18:14:14

+0

我实际上在标题中犯了一个愚蠢的错误,哎呀。它不应该插入,而是选择用户数据。 – Fabian 2011-05-31 18:17:25