2015-04-07 282 views
1

我有一個有趣的問題。num_rows不工作pdo,mysqli,總是返回0

//與功能PDO - >不行

function UserIsExist($name) 
{ 
    global $db; 
    $stmt = $db->prepare("SELECT id FROM tarskereso_users WHERE email = '$name' LIMIT 1"); 
     $stmt->execute(); 
     if ($stmt->fetchColumn() == 1) return 1; 
     else return 0; 
} 

//與庫MySQLi - >不工作

function UserIsExist($name) 
{ 
    global $db; 
    $stmt = $db->prepare("SELECT id,email FROM tarskereso_users WHERE email = ? LIMIT 1"); 
     $stmt->bind_param('s', $name); 
     $stmt->execute(); 
     $stmt->store_result(); 
     if ($stmt->num_rows == 1) 
      return 1; 
     else 
      return 0; 
     $stmt->close(); 
} 

//在Register.php

... other .. 
     if(UserIsExist($user) == 1) 
      $error_msg = "Is Exist"; 
     else 
     { 
      $birthdate = $year.'.'.$month.'.'.$day; 
      CreateUser($user,$pass,$birthdate,$sex); 
       $error_msg = 'Success'; 
     } 

所以,功能不工作,我嘗試:

$stmt = $db->prepare("SELECT id,email FROM tarskereso_users WHERE email = ? LIMIT 1"); 
     $stmt->bind_param('s', $name); 
     $stmt->execute(); 
     $stmt->store_result(); 

     if ($stmt->num_rows > 0) 
      ... other ... 
     else 
      echo 'isnt exist...'; 
     $stmt->close(); 

但不工作時,NUM_ROWS總是返回0。而在successfuly創建了PDO

+1

看起來您的查詢正在查找電子郵件,但您正在將名稱傳遞給您的函數。這可能是問題嗎? – Maximus2012

+0

你見過這個嗎? http://stackoverflow.com/questions/2700621/php-pdo-num-rows – Dallin

+0

你是否已經完成了涉及所有變量的'var_dump()',包括數據庫連接變量? – jeroen

回答

0

數據庫的帳戶,NUM_ROWS將無法正常工作。 您必須使用$ sql-> rowCount()方法獲取表中的記錄數。

<?php 
    $sql = $con->prepare("<YOUR SQL QUERY HERE>"); 
    $sql->execute(); 
    if($sql->rowCount() > 0){ 
     echo $sql->rowCount() ." rows found"; 
    } 
?> 
+0

在SQL存在該行,但$ sql-> rowCount()== 0 – Donald

+0

正確再次檢查您的SQL查詢。 查詢表達式必須匹配屬性選擇邏輯。 如果sql查詢沒有適當的代數邏輯,則查詢返回0行。 –

+0

或者您可以使用具有「count(*)」列的查詢來計算取得的行數,具體取決於您的WHERE子句。 在獲取數據的同時,可以使用PDO語句作爲 'code' $ numRows = $ sql-> fetch(PDO :: FETCH_ASSOC)['count']; echo $ numRows; –