Php mysql_num_行的PDO版本($result)==0)

Php mysql_num_行的PDO版本($result)==0),php,mysql,pdo,Php,Mysql,Pdo,可能重复: ^我相信这不是同一个问题——其他作者的代码与我的不同,需要不同的答案。我成功地从这篇文章中得到了答案,并将其标记为已回答。现在一切正常(没有其他“复制”线程的帮助) 我想显示一条“找不到客户端”消息,如果找不到结果,是否有以下代码的PDO方法 $result = mysql_query($sql) or die(mysql_error()."<br />".$sql); if(mysql_num_rows($result)==0) { echo "No Cl

可能重复:

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


我想显示一条“找不到客户端”消息,如果找不到结果,是否有以下代码的PDO方法

$result = mysql_query($sql) or die(mysql_error()."<br />".$sql);
if(mysql_num_rows($result)==0) {
    echo "No Client Found";
$result=mysql\u query($sql)或die(mysql\u error()。“
”。$sql); if(mysql_num_rows($result)==0){ 回显“未找到客户端”;
我尝试了以下方法

<?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>
    }   
    }           
    ?>  

我错过什么了吗

我读过:但没有帮助

<?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>
    }   
    }           
    ?>  
有一个教程:


有一个教程:.

PDOStatement::rowCount()
不返回某些数据库中受SELECT语句影响的行数。下面的代码使用
SELECT COUNT(*)
fetchColumn()
。还要准备语句和
尝试捕获异常

<?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; 
?>

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

<?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; 
?>


使用此代码我得到:
致命错误:调用未定义的方法PDO::rowCount()
:/@potts它应该是
$query->rowCount()
,而不是
$db->rowCount()
。仍然适用相同的警告,
rowCount()
被证明对
SELECT
不可靠,它可能在MySQL上工作,但如果以后更改RDBMS,可能会给您带来问题。可能不会很快更改。我还有一个问题。如何在where子句中输入数组?
$query=$db->query('SELECT*FROM client where client=($id'))
像那样?@potts你可以看一看。我看了一看,但我不知所措!这是我迄今为止的代码:使用这段代码我得到:
致命错误:调用未定义的方法PDO::rowCount()
:/@potts它应该是
$query->rowCount()
,而不是
$db->rowCount()
。同样的警告仍然适用,
rowCount()
被证明对
SELECT
不可靠,它可能在MySQL上工作,但如果以后更改RDBMS,可能会给您带来问题。可能不会很快更改。我还有一个问题。如何在where子句中输入数组?
$query=$db->query('SELECT*FROM client where client=($id'))
像那样?@potts你可以看一看。我看了一看,但我不知所措!这是我迄今为止的代码:尝试准备语句
//准备语句$stmt=$db->prepare(('SELECT*FROM client WHERE name=?AND other=?);//分配参数$stmt->bindParam(1,$name);$stmt->bindParam(2,$other);//执行查询$stmt->setFetchMode(PDO::FETCH_ASSOC);$stmt->execute();
代码末尾是否缺少一个}?my foreach有一个括号可以打开它-它将在哪里关闭?
foreach($row查询){
我为foreach添加了右括号和右括号。奇怪-我准确地复制了你的代码并将我的代码放在里面-看着它应该可以工作,但我得到了一个空白页…我的代码在这里:Try prepared statement
//prepare statement$stmt=$db->prepare('SELECT*FROM client WHERE name=?and other=?'));//分配参数$stmt->bindParam(1,$name);$stmt->bindParam(2,$other);//执行查询$stmt->setFetchMode(PDO::FETCH_ASSOC);$stmt->Execute();
代码末尾是否缺少一个}?我的foreach有一个括号可以打开它-它在哪里关闭?
foreach($query as$row){
我为foreach添加了右括号和右括号。奇怪-我准确地复制了你的代码并将我的代码放在了里面-看着它应该可以工作,但我得到了一个空白页…我的代码在这里: