使用fetch(PDO :: FETCH_ASSOC)回显来自MySQL db的数据;

时间:2014-10-06 13:35:35

标签: php mysql pdo

我已成功连接到我的MySQL数据库并使用以下代码获取数据:

try {
$results = $db->prepare("SELECT * FROM persoonsinfo WHERE id = ?");
$results->bindParam(1,$_SESSION["user_id"]);
$results->execute();

} catch (Exception $e) {
echo "data could not be retrieved";
exit;
}

使用var_dump($results->fetch(PDO::FETCH_ASSOC));转储正确的行!例如:

array(15) {
["id"]=>
string(1) "1"
["bedrijf"]=>
string(0) ""
["titel"]=>
string(0) ""
["voorletters"]=>
string(4) "test"
["tussenvoegsel"]=>
string(0) ""
["achtervoegsel"]=>
string(0) ""
["meisjesnaam"]=>
string(0) ""
["thuis_adres"]=>
string(22) "test"
["thuis_postcode"]=>
string(7) "test"
["thuis_plaats"]=>
string(9) "test"
["thuis_land"]=>
string(0) ""
["mobiele_telefoon"]=>
string(11) "test"
["email_thuis"]=>
string(20) "test"
["geboortedatum"]=>
string(0) ""
["bsn_nummer"]=>
string(0) ""
}

所以这很完美,但现在我对如何将数据回显到屏幕上感到很伤心。

我创建了这个:$user_info = $results->fetch(PDO::FETCH_ASSOC);并希望这个<?php echo $user_info['voorletters']; ?>可以正常工作,但它并没有回应任何事情而且它让我发疯。

我试图在我的`page-mijnawf.php&#39;中做echo。文件和我在那个文件中做了:

<?php include (TEMPLATEPATH . '/includes/database.php'); ?>

包含上面显示的代码。

我在这里缺少什么? 谢谢!

更新01

这里要求的是我的更新代码。生成三个块,我的database.php(数据库连接部分)user-session-info.php(获取用户ID的会话)和page-mijnawf.php(用户可见的前端页面): 这是database.php:     

try {
$db = new PDO("mysql:host=localhost;dbname=contacten_db;port=8889","root","root");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->exec("SET NAMES 'utf8'");
} catch (Exception $e) {
echo "Could not connect to the Database Contacten_DB";
exit;
}

try {
$results = $db->prepare("SELECT * FROM persoonsinfo WHERE id = ?");
$results->bindParam(1,$_SESSION["user_id"]);
$results->execute();

} catch (Exception $e) {
echo "data could not be retrieved";
exit;
}

echo "<pre>"; //For Testing only

$user_info = $results->fetch(PDO::FETCH_ASSOC);
var_dump($user_info);

?>

user-session-info.php

<?php
// Start the session
session_start();

// Set session variables
$_SESSION["user_id"] = intval(get_current_user_id());

//echo "User ID =" . " " . $_SESSION["user_id"]
?>
我删除了

page-mijnawf.php,因为其中99%的内容与此主题无关​​:

<div>
  <?php include (TEMPLATEPATH . '/includes/database.php'); ?>

  <?php include (TEMPLATEPATH . '/includes/user-info-session.php'); ?>

  <p class="no-bottom-margin">Welkom <?php echo $user_info['voorletters']; ?> Uw Fonds: </p>

</div>

注意此处代码块中结束div之前的行中的<?php echo $user_info['voorletters']; ?>。那条线没什么回声

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

&#34; fetch&#34; method返回数据库中的内容,然后跳到下一行。如果你只有一行,那么为&#34; var_dump&#34;已经到达结果集的末尾。

您的解决方案:请勿致电var_dump($results->fetch(PDO::FETCH_ASSOC));,以便只执行一次$results->fetch

如果您需要在屏幕上打印记录以进行调试,那么在致电$user_info = $results->fetch(PDO::FETCH_ASSOC);后,您可以执行var_dump($user_info)