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メソッドを使用して、返された結果をカウントします。クエリでは、一意の存在を確認する場合はメールアドレスやユーザー名などの一意のものを選択する必要があります。そうでない場合は、少なくとも1つの行を検索する場合は、条件を次のように変更します。

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 に答える