2

if-elseステートメントを適切に解析しようとしていますが、elseステートメントが解析されていないようです。

$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;
}

私の$resultは、$結果をエコーアウトすると言うと、PDOステートメントをINTに変換できないと言っているので、整数で返されると思います。それは私の最初の内側のelseステートメントには行きません。どうやって間違えたのか教えてください。

ありがとう

4

1 に答える 1

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;
}
于 2012-07-04T15:07:46.907 に答える