【发布时间】:2014-01-21 20:43:00
【问题描述】:
我正在创建一个页面来查看一个人的个人资料(关于他的所有信息都存储在数据库中 - 除了一些我没有选择的信息)。
我有这个代码:
<?php
if($_SESSION['id']) {
echo '<h2>Hello, '.$_SESSION['usr'].'!<br>You are registered and logged in!</h2>';
$result = mysql_query("SELECT id,usr,pass,email,dt,priv FROM tz_members WHERE usr = $)SESSION['usr']");
echo "<table border='0'>
<tr>
<th style='width: 15px'>ID</th>
<th style='width: 300px'>Username</th>
<th style='width: 100px'>Privileges</th>
<th style='width: 200px'>Join Date</th>
</tr>";
while($row = mysql_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['id'] . "</td>";
echo "<td>" . $row['usr'] . "</td>";
echo "<td>" . $row['priv'] . "</td>";
echo "<td>" . $row['dt'] . "</td>";
echo "</tr>";
}
echo "</table>"; }
else echo '<div class="roundbox"><h2>Please, <a href="login.html">login</a> and come back later!</h2></div>';
?>
好像报错了:
警告:mysql_fetch_array() 期望参数 1 是资源,布尔值在 /home/u594115708/public_html/viewprofile.html 第 66 行给出
更准确地说,它所说的“第 66 行”是这一行:
while($row = mysql_fetch_array($result))
你能告诉我我做错了什么吗?
【问题讨论】:
-
$)SESSION=$_SESSION? -
首先,您使用的是非常旧的
mysql_query,而不是properly escaping things。其次,您在$)SESSION附近的查询中有一个虚假的)。您的查询失败,您得到的是错误而不是结果行,而您忽略了它。 -
@Tadman,请问,我应该用什么来代替 mysql_query ?
-
其实应该是 {$_SESSION['usr']} 而不是 $)SESSION['usr']
-
PHP The Right Way 指南中的建议是使用 learn PDO 并使用它,如果不是 Propel。 PDO 使正确转义数据变得更加容易,并且在 PHP 的未来版本中得到支持。 Propel 将使您更容易专注于编写业务逻辑,而不是陷入 SQL 的困境。