2012年11月29日 星期四

[php][pdo]取得總筆數、FROM DUAL WHERE NOT EXISTS

*取得select跟insert、update、delete的總筆數方法是不一樣的

*rowCount無法返回SELECT的行數。
*rowCount可以返回DELETE, INSERT, 或者UPDATE語句的影響行數
               記住,是影響行數,不是執行成功的SQL語句的行數↑


select 有兩種方式取得總筆數

1.用count(*)


$sth=$search_pro->prepare("select count(*) from product where state=2");
$sth->execute();
$rowCount=$sth->fetchColumn(); //取得欄位1 的值  (也就是count(*))




$q = $search_pro->query(“SELECT count(*) from db;”);
$rows = $q->fetch();
$rowCount = $rows[0];

2.用count() fetchAll()

$q = $search_pro->query(“SELECT * from product”);
$rows = $q->fetchAll();
$rowCount = count($rows);
insert、update、delete也有兩種方式取得影響的筆數

1.rowCount()
//如果有存在的話才新增

$sth2=$edm->prepare("insert into test(m_id) select :m_id,:p_id FROM DUAL WHERE NOT EXISTS (select 1 from test where m_id=:m_id)");
$sth2->bindValue(':m_id',$_SESSION['m_id'],PDO::PARAM_INT);
$sth2->bindValue(':m_id',$_SESSION['m_id'],PDO::PARAM_INT);
$sth2->execute();
$qq= $sth2->rowCount();//查詢新增或刪除的資料筆數


2.exec() 執行成功會返回影響的行數
$count2=$add_pro->exec("update login set group=2 where m_id={$_SESSION['m_id']}");

沒有留言:

張貼留言