2012-07-03 63 views
15

mysql_num_rows现在我有一个PHP文件MySQL查询然后计算行是这样的:替代使用PDO

$count=mysql_num_rows($result); 


if ($count == 1) { 
    $message = array('status' => 'ok'); 
} else { 
    $message = array('status' => 'error'); 
} 

这工作得很好,但我想改变我的所有PHP文件使用PDO。那么PDO怎么做呢?

+0

的http://计算器。 COM /问题/ 2700621/p hp-pdo-num-rows – dude

+0

根本不需要这样的功能。请参阅[使用PDO获取行数](https://phpdelusions.net/pdo#count) –

回答

21
$res = $DB->query('SELECT COUNT(*) FROM table'); 
$num_rows = $res->fetchColumn(); 

$res = $DB->prepare('SELECT COUNT(*) FROM table'); 
$res->execute(); 
$num_rows = $res->fetchColumn(); 

你可以SE这要问,如果存在数据或选择,太:

$res = $DB->query('SELECT COUNT(*) FROM table'); 
$data_exists = ($res->fetchColumn() > 0) ? true : false; 

或与您的变量:

$res = $DB->query('SELECT COUNT(*) FROM table'); 
$message = ($res->fetchColumn() > 0) ? array('status' => 'ok') : array('status' => 'error'); 
+2

我错了,或者您将只获得“下一行的第一列”http://uk3.php.net/manual/ en/pdostatement.fetchcolumn.php – fearis

+0

在fetchColumn中没有参数,您将获得所选行的第一列。但我们只得到1个结果,这就是计数。下一行意味着,当您没有获取行或列时,您将从第一行结果开始。在你再次调用fetchColumn之后,你会得到下一行的内容。 – WolvDev

+0

是的,fetchcolumn()返回行的第一个列,而您需要使用rowCount() – Asuquo12

3

如果你不使用准备好的语句,然后尝试:

$find = $dbh->query('SELECT count(*) from table'); 
if ($find->fetchColumn() > 0){ 
    echo 'found'; 
} 

但是,如果选择准备好的发言,我强烈建议,然后:

$find = $dbh->prepare('SELECT count(*) from table'); 
$find->execute(); 
if ($find->fetchColumn() > 0){ 
    echo 'found'; 
} 
5

也许你可以使用PDO的“使用fetchall”方法,它返回一个包含所有选择阵列结果。 然后使用“count”方法来计算数组的行数。

例:

$rows = $stmt->fetchAll(); 
$num_rows = count($rows); 
+1

如果您只需要知道结果的数量,那么在大数据集上这可能会很昂贵。 –

+1

@QuinnComendant,''rowCount()'函数返回一个精确的计数* *无论如何你获取所有的行。 –

+1

@BillKarwin,你的意思是'mysql_num_rows()'? PDO的'rowCount()'方法“返回受最后一个DELETE,INSERT或UPDATE语句影响的行数” - 不是同一件事。 –

1

可以是这样的...

$numRows = $conn->query("SELECT COUNT(*) FROM yourtable")->fetchColumn(); 
echo $numRows; 
5
$stmt = $db->query('SELECT * FROM table'); 
$row_count = $stmt->rowCount(); 
echo $row_count.' rows selected'; 
-1
$jmldata  = $db->query("SELECT count(*) FROM blog_posts")->fetchColumn(); 
    $jmlhalaman = $p->jumlahHalaman($jmldata, $batas); 
    $linkHalaman = $p->navHalaman($_GET['halpost'], $jmlhalaman); 

    echo "<div class='center_title_bar'>Halaman : $linkHalaman </div> 
    </div></div></div> 
    "; 

它的工作谢谢:)

-1
//query for counting the total number of rows 
$result = $conn->prepare("SELECT COUNT(*) FROM your_table"); 
    $result->execute(); 
    $num_rows = $result->fetchColumn(); 

    //condition to display the result 
    if ($num_rows>0) 
    { 
     echo "there is some results =".$num_rows; 
    }else{ 
     echo "no result"; 
    } 
+1

你了解你自己的代码吗? – Benjamin

+0

不清楚! – Younes27