【问题标题】:echoing data from MySQL db using fetch(PDO::FETCH_ASSOC);使用 fetch(PDO::FETCH_ASSOC) 从 MySQL 数据库回显数据;
【发布时间】:2014-10-06 22:33:39
【问题描述】:

我已成功连接到我的 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”文件中执行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 之前的行中的 &lt;?php echo $user_info['voorletters']; ?&gt;。那条线没有回应

感谢您的帮助!

【问题讨论】:

  • (顺便说一句,如果你在输出一个div之后包含了user-info-session.php文件(它调用了session_start()),你会得到一个错误)

标签: php mysql pdo


【解决方案1】:

“fetch”方法从数据库中返回内容,然后跳到下一行。如果你只有一行,那么为“var_dump”调用一次就会到达结果集的末尾。

您的解决方案:不要调用var_dump($results-&gt;fetch(PDO::FETCH_ASSOC));,以便只执行一次$results-&gt;fetch!

如果你需要在屏幕上打印记录进行调试,那么在调用$user_info = $results-&gt;fetch(PDO::FETCH_ASSOC);之后你可以做var_dump($user_info)

【讨论】:

  • 你说得对!谢谢你让我知道!但是,这仍然给我留下了回显不起作用的问题,您有什么建议吗?
  • @BorisKamp 能否请您发布完整的更新代码?谢谢
  • 更改后,我尝试运行您的代码(精简到最低限度)并且它在我的系统上运行。如果将 &lt;?php include (TEMPLATEPATH . '/includes/database.php'); ?&gt; 替换为 &lt;?php include (TEMPLATEPATH . '/includes/database.php'); var_dump($user_info); ?&gt; 会发生什么?
  • 替换它使 echo 命令起作用!所以看起来它没有在page-mijnawf.php 文件中没有var_dump 的页面上的信息,对吗?我该如何解决这个问题?
  • 这真的很尴尬。现在可以了!我不知道为什么,因为在您建议替换 &lt;?php include (TEMPLATEPATH . '/includes/database.php'); ?&gt; 之后,我将所有内容都改回了原来的状态(代码来自 update 01),现在它可以工作了。我一无所知,我能“触发”什么吗?没有权利?无论如何,我要非常感谢你!我很高兴它现在可以工作了!
猜你喜欢
  • 1970-01-01
  • 2013-05-28
  • 2018-04-16
  • 2013-08-29
  • 1970-01-01
  • 1970-01-01
  • 2015-08-12
  • 2012-08-19
  • 1970-01-01
相关资源
最近更新 更多