我在尝试从 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/