2012-07-04 4 views
2

Я пытаюсь разобрать мои инструкции if-else, но кажется, что он не анализирует инструкцию else.PHP-преобразование int в строку

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result == "") 
     { 
     echo "'{$a}' is invalid. No such record", PHP_EOL; 
     } 
     else 
     { 
      echo "'{$a}' is found", PHP_EOL; 
     } 

} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 

Моего $ результата я думаю, что он вернется в Integer, как, когда я говорю эхо $ результата, оно говорит PDO заявление не может быть преобразовано в INT. Это не идет в мое первое внутреннее заявление. Пожалуйста, сообщите, как я совершил свою ошибку.

Благодаря

+0

вы можете сделать var_dump ($ результат); перед if-else? – ivoba

+0

$ result - это объект, а не строка, если вы хотите получить строку и проверить ее, вам нужно вызвать метод результата. – SpacedMonkey

ответ

2

Ваш $result является объектом, а не целое число. Вам нужно вызвать метод выборки, например fetchAll, или даже проще, fetch, чтобы поместить данные в другую переменную.

Попробуйте с:

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result) 
     { 
      $data = $result->fetchAll(PDO::FETCH_NUM); 
      if (!isset($data[0])) 
       echo "'{$a}' is invalid. No such record", PHP_EOL; 
      else 
       echo "'{$a}' is found", PHP_EOL; 
     }  
} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 

Вот еще один пример с fetch:

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result) 
     { 
      $data = $result->fetch(PDO::FETCH_ASSOC); 
      if (!$data) 
       echo "'{$a}' is invalid. No such record", PHP_EOL; 
      else 
       echo "'{$a}' is found", PHP_EOL; 
     }  
} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 
+0

Ваш код работает спасибо! Но я не хочу брать все записи. Только хотите, чтобы эта конкретная запись соответствовала базе данных. Любая идея получить его? – JLearner

+0

Возможно, вы захотите использовать 'fetch'. Взгляните на страницу руководства php: http://php.net/manual/en/pdostatement.fetch.php –

+0

Я обновил свой ответ, чтобы подать пример с 'fetch'. –

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