php使用PDO检索结果

时间:2014-07-06 07:04:57

标签: php pdo

我在今天之前从未使用过PDO,但我相信我的研究表明它对于基于查询的交易最安全。我执行了以下代码:

<?php 
header('Content-type: text/plain; charset=utf-8');


$db_conn = new  PDO('mysql:host=localhost;dbname=pal','root','root');
$db_conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$message = "";
$email = "someemail@gmail.com";//($_POST['email']); 


$qry = $db_conn->prepare('SELECT * FROM users WHERE email = :email');
$qry->bindParam(':email', $email);
$qry->execute();
$result = $qry->fetch();

print_r($result);

echo utf8_encode($message);
?>

为了测试,我已将电子邮件的值更改为静态值而不是$ _POST。执行此操作时,它返回以下内容:

Array
(
    [id] => 1
    [0] => 1
    [email] => someemail@gmail.com
    [1] => someemail@gmail.com
    [password] => test
    [2] => test
    [first_name] => Jay
    [3] => Jay
    [last_name] => Merc
    [4] => Merc
    [birth_year] => 1989
    [5] => 1989
    [gender] => Male
    [6] => Male
    [created_at] => 2014-07-05 22:43:19
    [7] => 2014-07-05 22:43:19
)

这是我从print_r()函数得到的。我的问题是为什么我要复制一切?例如[id]显示0,下一个[0]显示[0],依此类推。第二个问题是我如何才能访问电子邮件(我希望此查询的结果只是电子邮件地址的字符串,以便检查用户是否存在以进行注册)

提前致谢

1 个答案:

答案 0 :(得分:7)

由于:

$result = $qry->fetch();

使用整数索引和列名提取数组。

使用它来获取仅按列名索引的数组:

$result = $qry->fetch(PDO::FETCH_ASSOC);

有关索引的进一步参考,请查看此处:http://www.php.net/manual/en/pdostatement.fetch.php

第二部分,将您的查询更改为:

$qry = $db_conn->prepare('SELECT email FROM users WHERE email = :email');