0

可能重复:
使用 PDO 替代 mysql_num_rows

^ 我相信这不是同一个问题 - 其他作者的代码与我的不同,需要不同的答案。我成功地从这篇文章中得到了答案,并将其标记为已回答。现在一切正常(其他“重复”线程没有帮助。


如果未找到结果,我想显示“未找到客户端”消息,以下代码是否有 PDO 方法?:

$result = mysql_query($sql) or die(mysql_error()."<br />".$sql);
if(mysql_num_rows($result)==0) {
    echo "No Client Found";

我尝试了以下...

<?php                               
$db = new PDO('mysql:host=localhost;dbname=XXXXXXXXXXXX;charset=utf8','XXXXXXXXXXXX', 'XXXXXXXXXXXX');

    $query = $db->query('SELECT * FROM client');

    if ($query == FALSE) {
      echo "No Clients Found";
    }
    else
    {
    foreach($query as $row)
    {
     <some code here>
    }   
    }           
    ?>  

我错过了什么吗?

我已阅读: http: //php.net/manual/en/pdostatement.rowcount.php但没有帮助

4

2 回答 2

3
<?php                               
$db = new PDO('mysql:host=localhost;dbname=XXXXXXXXXXXX;charset=utf8','XXXXXXXXXXXX', 'XXXXXXXXXXXX');

    $query = $db->query('SELECT * FROM client WHERE ID = 10');

    if ($query->rowCount() != 1) {
      echo "No Clients Found";
    }
    else
    {
    foreach($query as $row)
    {
     <some code here>
    }   
    }           
    ?>  

在 PDO 中,rowCount 方法用于对返回的结果进行计数。如果您想检查是否存在唯一性,您的查询必须选择一些唯一的东西,例如电子邮件地址或用户名,否则,如果您想至少找到一行,请将条件更改为:

if ($db->rowCount() == 0)

有一个教程:面向 MySQL 开发人员的 PDO

于 2013-01-26T13:36:14.043 回答
1

PDOStatement::rowCount()在某些数据库 中不返回受SELECT语句影响的行数。文档下面的代码使用SELECT COUNT(*)fetchColumn()。还准备了语句和try&catch块来捕获异常。

<?php
// Get parameters from URL
$id = $_GET["client"];
try {
    $db = new PDO('mysql:host=localhost;dbname=XXXX;charset=utf8', 'XXXX', 'XXXX');
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // Prepare COUNT statement
    $stmt1 = $db->prepare("SELECT COUNT(*) FROM client WHERE client = ?");
     // Assign parameters
    $stmt1->bindParam(1,$id);
    $stmt1->execute();
    // Check the number of rows that match the SELECT statement 
    if($stmt1->fetchColumn() == 0) {
        echo "No Clients Found";
    }else{
        //echo "Clients Found";
        // Prepare Real statement
        $stmt2 = $db->prepare("SELECT * FROM client WHERE client = ?");
     // Assign parameters
        $stmt2->bindParam(1,$id);
        $stmt2->setFetchMode(PDO::FETCH_ASSOC);
        $stmt2->execute();
        while($row = $stmt2->fetch()) {
            //YOUR CODE HERE  FROM
             // Title
             echo '<div id="portfolio_detail">';
             //etc.etc TO
             echo '<div><img src="'."/client/".$row[client].'_3.png"/></div>';
             echo '</div>'; 
        }//End while
    }//End if else
 }//End try 
 catch(PDOException $e) {
    echo "I'm sorry I'm afraid you have an Error.  ". $e->getMessage() ;// Remove or modify after testing 
    file_put_contents('PDOErrors.txt',date('[Y-m-d H:i:s]').", myfile.php, ". $e->getMessage()."\r\n", FILE_APPEND);  
 }
//Close the connection
$db = null; 
?>
于 2013-01-26T14:04:43.457 回答