2016-05-13 53 views
-3

我有一个页面,所有现在正在我唯一的问题是ciunying从DATABSE记录功能..PDO计数不工作

Class.user.php

Public function data($count) 
{ 
$stmt=$this->db->prepare("SELECT COUNT(*) FROM login"); 
$result=$this->db->prepare($count); 
$result->execute(); 
$number_of_rows=$result->fetchColumn(); 
} 

的index.php

<table> 
    <thead> 
    <tr> 
    <th>2014</th> 
    </tr> 
    </thead> 

    <tbody> 
     <?php 
      $count="SELECT COUNT(*) FROM login"; 
     $crud->data($count); 
     ?> 

的问题在于,其不表示计数..

+1

'SELCT'和'CIUNT'在您的'index.php'中都拼写错误。你的功能是奇怪的,没有意义 - 为什么你准备两个不同的语句,只执行一个? – ceejayoz

+0

林对不起,它只是一个错字 – kier

+1

你既不输出也不返回任何点的计数值。所以,是的,计数将不会显示。 – deceze

回答

2
  1. 您正在编写与函数参数相同的查询,但也在函数本身内部。而你只是真的使用一个。这是无稽之谈。专用您的方法返回计数,不要将查询作为参数。
  2. prepare在这种情况下,声明是毫无意义的,因为您既不重复使用它,也不约束任何值。你可以直接使用query()
  3. 紧钳:您既不输出也不返回计数,所以非常期望它不会出现在任何地方。

这里有一个健全的版本:

public function getCount() { 
    $result = $this->db->query('SELECT COUNT(*) FROM login'); 
    return $result->fetchColumn(); 
} 
<tbody> 
    <tr> 
     <td> 
      <?php echo $crud->getCount(); ?> 
+0

我已经你的代码和它的工作现在..但我试过我的查询这样的选择计数(user_id)作为身份证,sum(user_id)为从登录 – kier

+0

区域但问题是,它只是回声ciunt而不是总和。 – kier

+1

@kier嗯,那是因为你没有花时间去了解发生了什么事情。你需要参加一个基本的PDO教程,然后使用你的大脑。你的代码调用'getColumn'。向它传递一个提取两列的查询不会使代码神奇地返回多于一列。 – ceejayoz

-3

我觉得我平时做这样link

$sql= "SELECT COUNT(*) FROM login"; 
$stmt = $pdo->prepare($sql); 
$stmt->execute(); 
$row =$stmt->fetchObject(); 

然后输出它,你将不得不ECHO

<table> 
    <tbody> 
     <tr> 
     <td> 
      <?php echo $row['count'];?> 
     </td> 
     </tr> 
    </tbody> 
</table>