我使用PDO连接到MySQL数据库并获取所有数据。当我打印出数组时,重复这些值。怎么解决?谢谢
连接到DB:
$db = new PDO("mysql:host=localhost:3306;dbname=$dbName", $user, $pass,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
获取数据并打印出结果:
$result = $db->query("select UserBirthday, UserAddress, UserZipCode, UserPhone, UserFirstName,
UserLastName, UserPassword, UserSecurityQuestion
from USER_PROFILE
where UserID=$userID;")->fetchAll();
print_r($result);
打印出来的内容:
Array ( [UserBirthday] => 1999-01-01 [0] => 1999-01-01
[UserAddress] => 1 Infinite Loop Seattle [1] => 1 Infinite Loop Seattle
[UserZipCode] => 98125 [2] => 98125
[UserPhone] => 2068874596 [3] => 2068874596
[UserFirstName] => abc [4] => abc
[UserLastName] => cdf [5] => cdf
[UserPassword] => 5271593ca406362d7a2701e331408ab77d5b5b88 [6] => 5271593ca406362d7a2701e331408ab77d5b5b88 [UserSecurityQuestion] => null [7] => null)
答案 0 :(得分:4)
默认情况下,PDO将按名称和索引获取列。
使用PDO::FETCH_ASSOC
获取模式只按名称获取:
$result = $db->query("select UserBirthday, UserAddress, UserZipCode, UserPhone, UserFirstName,
UserLastName, UserPassword, UserSecurityQuestion
from USER_PROFILE
where UserID=$userID;")->fetchAll(PDO::FETCH_ASSOC);
另请查看替代fetch modes。
答案 1 :(得分:0)
正确的方式
$dsn = "mysql:host=localhost;dbname=$dbName;charset=utf8";
$opt = array(
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
);
$db = new PDO($dsn,$user, $pass, $opt);
$stm = $db->prepare("select * FROM USER_PROFILE where UserID=?");
$stm->execute(array($userID));
$data = $stm->fetch();
print_r($data);