【问题标题】:PHP converting of int to stringPHP将int转换为字符串
【发布时间】:2012-07-04 23:26:29
【问题描述】:

我正在尝试很好地解析我的 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 语句中。请告知我是如何犯错误的。

谢谢

【问题讨论】:

  • 你能做一个 var_dump($result);在 if-else 之前?
  • $result 是一个对象而不是字符串,如果你想获取一行并检查它,你需要调用一个结果方法。

标签: php sqlite


【解决方案1】:

您的$result 是一个对象,而不是一个整数。您需要调用 fetch 方法,例如 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;
}

【讨论】:

  • 您的代码正在运行,谢谢!但我不想获取所有记录。实际上只希望该特定记录与数据库匹配。有什么想法来取一个吗?
  • 您可能想使用fetch。查看 php 手册页:php.net/manual/en/pdostatement.fetch.php
  • 我必须说你是我的救星!以前我试过 fetch_assoc() 然后找不到。非常感谢!
猜你喜欢
  • 1970-01-01
  • 2011-10-02
  • 2011-03-06
  • 1970-01-01
  • 2018-07-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多