在php中使用PDO时出现意外结果
我是PDO数据对象的新手。最近我从一个表中提取数据。我遇到了一个意想不到的结果。仍在努力寻找答案,但目前没有成功 我的表格:测试在php中使用PDO时出现意外结果,php,mysql,pdo,Php,Mysql,Pdo,我是PDO数据对象的新手。最近我从一个表中提取数据。我遇到了一个意想不到的结果。仍在努力寻找答案,但目前没有成功 我的表格:测试 a __ 23 76 786 988 234 12 13 我的代码 <?php try { $dbc = new PDO('mysql:host=localhost;dbname=test','root','',array( PDO::ATTR_PERSISTENT => TRUE )); foreach($dbc->query('SELECT *
a
__
23
76
786
988
234
12
13
我的代码
<?php
try
{
$dbc = new PDO('mysql:host=localhost;dbname=test','root','',array( PDO::ATTR_PERSISTENT => TRUE ));
foreach($dbc->query('SELECT * FROM `test` ') as $row)
{
print_r($row);
}
$dbc= NULL;
}
catch( PDOException $e)
{
print "Error !:". $e->getMessage()."<br>";
die();
}
?>
这里我不明白为什么我在数组中得到2个元素:
[a]=>23表示a列的值为23
但是为什么我会得到
[0]=>23
有关如何使用
FETCH_ASSOC
或FETCH_NUM
的信息,请参见本页。默认情况下,PDO在获取数据时将获取数值数组和关联数组。为了确保只获取2个参数中的1个,可以使用PDO::FETCH_ASSOC
或PDO::FETCH_NUMBER
将其指定为查询函数中的第二个参数
改变
foreach($dbc->query('SELECT * FROM `test` ') as $row)
进入
或
[编辑]您还可以在创建PDO连接后,通过执行以下操作设置默认获取模式:
// Set default fetch mode to PDO::FETCH_ASSOC
$dbc->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
当你这么做的时候
foreach($dbc->query('SELECT * FROM `test` ')
将完全按照
foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)
希望这有帮助。试试这种方法
$query = $db->prepare('........);
$query->execute();
while($row = $query->fetch()){
// rest of code here
}
这是
PDO
获取关联数组的一个小问题。你可以这样做
foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)
其他人
$dbc->query('SELECT * FROM `test` ')->fetch(PDO::FETCH_ASSOC);
关联数组随附您需要设置
PDO::FETCH_ASSOC
以仅获取关联
数组,你真正需要的是阅读你正在使用的函数的手册页,这仍然会给出一个数字数组和一个关联数组。在我的情况下,它返回关联数组,或者如果他仍然面临问题,他可以使用$query->bindColumn('column_name',$var_name)
您可能在调用之前设置了默认的获取模式。OP很可能没有。Rahul增加了一种设置fetchmode的额外方法,请参考我的更新答案。
$query = $db->prepare('........);
$query->execute();
while($row = $query->fetch()){
// rest of code here
}
foreach($dbc->query('SELECT * FROM `test` ', PDO::FETCH_ASSOC) as $row)
$dbc->query('SELECT * FROM `test` ')->fetch(PDO::FETCH_ASSOC);