嗯,我是一个新人,如果我的问题中有任何错误,请不要理睬,我有这个问题。我只想创建一个像个人资料信息的小网站。
好的,当用户使用他的电子邮件登录网站时,我们使用php脚本并从mysql中检索数据并使用printf
或echo
所以有两种方法可以做到
例如,我的数据库表中的一个看起来像这样
name birthday aboutme gender dreams music movies blabla//
someperson xx xx xx xx xx xx
第一种方法 demo.php
<html>
<body>
name: <?some php script to get user name?>
<20 lines of html tags and data>
birthday: <?some php script to get user name?>
<20 lines of html tags and data>
about user <?some php script to get user about?>
<some more html data>
<?some more php scripting?>
在第一种方法中,我们始终连接到数据库并获取数据,然后在20行html代码之后,然后我们再次连接到同一个表和数据库并获取下一列值并断开连接然后再次我们正在连接到服务器等等。在此过程中,我们正在连接和断开与服务器的连接
所以在第一种方法中我们总是连接和断开与服务器的连接,我只是认为它可能会导致服务器上的严重开销,因为我们连接并断开每10行代码。我的想法是真的还是有的有什么不对吗?
第二种方法 demo.php
<?php
retrieve all the data you need at a time here and then use
echo "<html>"
echo "<body>"
echo "name: <?just php variable value that was retrieved?>
echo "<20 lines of html tags and data>"
echo "birthday: <?just php variable value that was retrieved?>
?>
在第二种方法中,我们使用服务器运行的php脚本只是在开始时获取数据,然后只使用检索到的html标签和数据回显它们,但我认为它是如此不必要,因为我们正在制作服务器执行普通浏览器明确执行的html标记
我发现两种方式都会在服务器上造成严重的开销问题。任何人都可以解释什么是最好的方法呢?有没有其他专业人士选择的方式,我不确定他们如何通过它。
有没有办法从数据库中一次检索数据,然后在html标签之间回显?
就像
一样 <?get all the data from database here>?
<div> echo 'some php variable'
<span> echo 'some php variable'
有这样的方式吗?请告诉我这样做的最佳方法。谢谢
非常感谢任何帮助
答案 0 :(得分:1)
如果您的所有数据都在同一个表中,那么您只需要一个查询。你应该切换进出PHP,而不是在PHP内部组成html。它可能看起来像这样:
<?php
$db = new PDO($dsn, $user, $password);
$stmt = $db->prepare('SELECT * FROM user_profile WHERE user_id = ?');
$stmt->execute(array($user_id));
$profile = $stmt->fetch(PDO::FETCH_ASSOC);
$stmt->close();
?>
<html>
<head>
<title> <?php echo $profile['username']; ?> Profile</title>
</head>
<body>
<div>
<div>
<div>
<?php foreach($profile as $attribute => $value): ?>
<div>
<span class="label"><?php echo $attribute ?></span>
<span class="profile_value"><?php echo $value; ?> </span>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</body>
</html>
答案 1 :(得分:1)
是的,如果可能的话,我会预先获得所有数据(如果它不依赖于脚本执行中的任何其他内容)。
如果我按照你正确的说法进行操作,那么你的伪代码就会非常接近。你似乎想要这样的东西:
<?
// here is where you get all the data from MySQL using PHP
?>
<!-- HTML now -->
<div>
<?
//PHP starts again
echo $something;
//PHP ends
?>
<!-- HTML again -->
</div>
您可以根据需要多次跳入和跳出PHP,只要最合适。
答案 2 :(得分:1)
你认为你不必使用php echo声明你所有的html是正确的。 php在向下移动代码时生成HTML。所以你可以在php调用之间声明HTML。
例如:
<html>
<body>
<?php
$results = mysql_query(SELECT name,gender FROM table WHERE id='34';
// Additional code to assign $results array to variables
?>
<div><?=$name;?></div>
<div><?=$age;?></div>
</body>
</html>
最重要的是要注意你可以通过你的文件多次调用php,它将继续通过php调用。所有变量和函数都存储在整个页面中。
希望这有帮助。