【问题标题】:Using PDO fetch to get an array and using if statement使用 PDO fetch 获取数组并使用 if 语句
【发布时间】:2012-04-17 05:24:28
【问题描述】:

我的数组只会得到 0 或 1。我正在为 mysql 使用 PDO 语句,这就是我所拥有的

$result = $fetching -> fetch();
$first_result = $result[0];

if($first_result === 0){
//do something...
}else{
echo "testing";
}

无论如何,我总是得到testing,无论它是否为0。我已经回显了$first_result[0] 用于测试目的,它会告诉我价值是什么。所以我知道该值会射出0或不射出0。但是当它为0时,它仍然会回显testing

请帮忙?

谢谢!

【问题讨论】:

  • 您是否进行了 var_dump() 以确保类型匹配?记住 === 比较类型和值。

标签: php mysql arrays if-statement pdo


【解决方案1】:

首先尝试把== 不是类型等价。其次,我总是用它来检查是否有任何记录:

$q = $pdo->prepare('Your SQL');
$result = $q->execute($params);
$rows = $q->fetchAll(PDO::FETCH_ASSOC);
if (!count($rows) || !$result)
{
    echo 'No rows or error';
    // To output error $pdo->errorInfo();
}
else
{
    $el = $row[0];
}

希望对您有所帮助。

【讨论】:

  • 如果数据库变得非常大,fetchAll 会很慢吗?
  • 取决于你说的非常大是什么意思?如果您期望有大量的行,最好限制查询并进行分区。无论如何,如果您想一次全部选择,总会有硬件限制。所以,分区是要走的路。
【解决方案2】:

=== 正在测试类型,在这种情况下 pdo 将返回一个字符串,因此您正在针对字符串测试一个 int。

试试:

if($first_result === '0'){

【讨论】:

    【解决方案3】:

    似乎您的类型不匹配。 === 匹配值和类型

    PHP 的 === 运算符使您能够比较或测试两者的变量 平等和类型。参考下面的例子。

    Read More...

    【讨论】:

      猜你喜欢
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 2017-04-07
      • 2016-07-26
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多