php - mysql 到 PDO 迁移问题

标签 php mysql pdo migration

我在尝试从 mysql_ 迁移到 PDO 时遇到一些问题(我是新手)。

我已经完成了大部分工作,但是有一个功能让我抓狂。

这里是:

function fields($thequery) /* SELECT * FROM table */
{
    $fields=array();
    $fields['num']=mysql_num_fields($thequery);
    for ($i = 0; $i < $fields['num']; $i++) {
        $fields['data'][]=mysql_fetch_field($result, $i);
    }
    return $fields;
}

我尝试阅读其他一些帖子,但无法弄清楚。

这是我目前所能做的最好的,但我总是得到 undefined index “num”。

function fields($thequery)
{
    global $pdo; /* Connection */

    $result = $pdo->prepare($thequery);
    $result->execute();
    $fields['num'] = $result->rowCount();
    for ($i = 0; $i < $fields['num']; $i++) {
        $fields['data'][]=$result->getColumnMeta($i);
    }
    return $fields;
}

我做错了什么? 提前致谢!

最佳答案

我看到了问题;当您打算调用 PDOStatement::columnCount() 时,您正在调用 PDOStatement::rowCount()

你的代码应该是

function fields($thequery)
{
    global $pdo; /* Connection */

    $result = $pdo->prepare($thequery);
    $result->execute();
    $fields['num'] = $result->columnCount();  // Change this line
    for ($i = 0; $i < $fields['num']; $i++)
    {
        $fields['data'][] = $result->getColumnMeta($i);
    }
    return $fields;
}

请注意the documentation for PDOStatement::getColumnMeta()包含以下警告:

Warning This function is EXPERIMENTAL. The behaviour of this function, its name, and surrounding documentation may change without notice in a future release of PHP. This function should be used at your own risk.

Warning Not all PDO drivers support PDOStatement::getColumnMeta().

关于php - mysql 到 PDO 迁移问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37214599/

相关文章:

php - PDO + MsSQL + freetds = INSERT 查询中的错误字符

php - Apple 推送通知 - PHP - SSL 操作失败,代码为 1

javascript - Magento 1.9.2 - 更新可配置产品流程中的自定义属性 'delivery_time'

mysql - 如何使用另一个唯一列获取列数?

mysql - 提高JOIN和GROUP BY性能的指标有哪些

php - PDO 准备好的语句转换单引号

php mail() 函数更改字符并删除回车符

php - 哪种 MySQL 排序规则与 PHP 的字符串比较完全匹配?

php - MySQL float 被意外舍入

PHP/PDO : Delete image on server