【问题标题】:Returning an int from a single row in a Sqlite DB从 Sqlite DB 中的单行返回一个 int
【发布时间】:2015-08-28 00:54:33
【问题描述】:

我需要返回来自数据库的 2 个整数,但是,我似乎无法正确查询。

$result1 = $db->query('SELECT * FROM StoredData WHERE VoteName="foo"')->fetch(); 
$result2 = $db->query('SELECT * FROM StoredData WHERE VoteName="bar"')->fetch();

我需要结果 1/2 才能从名为“VoteTotal”的列中返回整数,我尝试了各种方法但运气不佳,包括将 * 更改为我认为可以做到的 VoteTotal。

VoteName 是独一无二的,我也试过 fetchcolumn 没有任何运气:(

架构很简单:

ID、VoteName、VoteTotal

【问题讨论】:

  • 也许您需要在查询中使用单引号?

标签: php sql sqlite pdo


【解决方案1】:

如果您将“VoteName”作为静态值传递,则根本不要使用引号,如下所示。

$result1 = $db->query('SELECT * FROM StoredData WHERE VoteName=foo')->fetch(); 
$result2 = $db->query('SELECT * FROM StoredData WHERE VoteName=bar')->fetch();

【讨论】:

    【解决方案2】:

    就像之前解释的那样,如果它是静态值,则必须避免使用引号,或者直接将不带引号的变量作为 $variable_name。 制作 * 到 VoteTotal 应该可以解决问题。

    否则,您将拥有一个关联数组,您必须使用 $result["VoteTotal"] 从中选择所需的结果

    $result1 = $db->query("SELECT * FROM StoredData WHERE VoteName=foo")->VoteTotal; 
    

    【讨论】:

      【解决方案3】:

      使用您提供给我们的代码,变量 $result1(和 $result2)是您数据库中的行。
      您缺少的是使用 ['VoteTotal'] 选择想要的列。
      这是对我有用的代码:

      $connection = new PDO("mysql:dbname=test;host=localhost;charset=utf8", "admin", "admin");
      $connection -> exec("set names utf8");
      
      $name1 = $connection->query("SELECT * FROM storedata WHERE VoteName='name1'");
      $name2 = $connection->query("SELECT * FROM storedata WHERE VoteName='name2'");
      
      echo $name1->fetch()['VoteName'];
      echo "<br><br>";
      echo $name2->fetch()['VoteTotal'];
      

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-21
        • 2021-04-10
        相关资源
        最近更新 更多