相关疑难解决方法(0)

如何使用PDO从MySQL获取数值类型?

我正在使用PDO和MySQL,出于某种原因,当从数据库获取int类型的值时,PDOStatement返回数字的字符串表示而不是数字类型的值.我该如何防止这种情况发生?

我注意到有一个PDO类的属性:PDO::ATTR_STRINGIFY_FETCHES应该处理这个,但是,当试图修改它时,它会抛出一个错误,说该属性对MySQL驱动程序无效.

在咨询数据库时获取字符串而不是数字是否正常?

php mysql pdo

61
推荐指数
4
解决办法
3万
查看次数

为什么PDO_MySQL不返回整数?

我正在将我的PHP代码从mysql(在5.5中弃用)迁移到PDO_MySQL.但是,mysql_fetch_row返回整数,同时PDOStatement::fetch返回数字的字符串.如何让PDO像前者一样?

结果mysql_fetch_row:

array(1) {
  ["id"]=>
  int(1)
}
Run Code Online (Sandbox Code Playgroud)

结果PDOStatement::fetch:

array(1) {
  ["id"]=>
  string(1) "1"
}
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

15
推荐指数
3
解决办法
6888
查看次数

为什么所有数据类型都返回为带有PHP的sqlite3 fetchAll(PDO:FETCH_ASSOC)的字符串?

我在用

$rows = $statement->fetchAll(PDO::FETCH_ASSOC);
Run Code Online (Sandbox Code Playgroud)

得到我桌子的所有行.

模式定义为"id INTEGER PRIMARY KEY,title TEXT,year INTEGER,price REAL"

来自fetchAll结果的一行是

array(4) {
    [0]=>
    string(1) "1"
    [1]=>
    string(14) "The Dark Night"
    [2]=>
    string(4) "2008"
    [3]=>
    string(5) "19.95"
  }
Run Code Online (Sandbox Code Playgroud)

为什么所有数据类型都以字符串形式返回?我希望它们按照架构中的定义返回.我理解SQLite的"无类型"特性,但它们确实将有限的数据类型定义为TEXT,INTEGER和REAL.如何使用指定的数据类型返回数据?我不想遍历每一行,并用PHP转换它 - 这似乎太慢了.

完整的测试代码如下:

<?
class sqlite_test {
    function __construct()
    {
        $this->dbase_filename = "test.sqlite";
        $this->init_dbase();

    }

    function init_dbase()
    {
        $this->pdo = new PDO("sqlite:".$this->dbase_filename);
    }

    function open_table()
    {
        $table = "dvds";

        if ( ! ($test_to_see_if_table_exists = $this->pdo->query("SELECT 1 from $table")) ) {
            $schema = "id INTEGER PRIMARY KEY, title TEXT, year …
Run Code Online (Sandbox Code Playgroud)

php sqlite pdo

7
推荐指数
1
解决办法
1864
查看次数

标签 统计

pdo ×3

php ×3

mysql ×2

sqlite ×1