2015-04-07 2 views
1

У меня есть интересная проблема.num_rows не работает pdo, mysqli, всегда возвращается 0

// в ПДО с функцией -> не работает

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. И учетную запись в базе данных, созданной успешно

+1

Похоже, что ваш запрос ищет электронную почту, но вы передаете имя своей функции. Может ли это быть проблемой? – Maximus2012

+0

Вы видели это? http://stackoverflow.com/questions/2700621/php-pdo-num-rows – Dallin

+0

Вы выполнили 'var_dump()' всех задействованных переменных, включая переменные соединения с базой данных? – jeroen

ответ

0

в PDO, 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; –

Смежные вопросы