如何从数据库中检索有关用户的信息

时间:2014-02-07 11:42:31

标签: php mysql

我正在尝试使用基于我的网页浏览中的用户名的PHP从数据库中检索特定用户的信息,但它显示错误:

  

解析错误:语法错误,意外T_ENCAPSED_AND_WHITESPACE,   期待C:\ wamp \ www \中的T_STRING或T_VARIABLE或T_NUM_STRING   第5行的文件夹\ profileview.php

代码

<?php 
// Connects to your Database 
mysql_connect("localhost", "root", "") or die(mysql_error()); 
mysql_select_db("database") or die(mysql_error()); 
$SQL="SELECT * FROM members WHERE userName=$_SESSION['userName']"; 
or die(mysql_error()); 
$data = mysql_query($SQL);
Print "<table border cellpadding=3>"; 
while($info = mysql_fetch_array( $data )) 
{ 
Print "<tr>"; 
Print "<th>First Name:</th> <td>".$info['fname'] . "</td> "; 
Print "<th>Middle Name:</th> <td>".$info['mname'] . "</td> "; 
Print "<th>Last Name:</th> <td>".$info['lname'] . "</td> "; 
Print "<th>UserName:</th> <td>".$info['userName'] . "</td> "; 
Print "<th>Gender:</th> <td>".$info['gender'] . "</td> "; 
Print "<th>Date Of Birth:</th> <td>".$info['dob'] . "</td> "; 
Print "<th>Mobile Number:</th> <td>".$info['mobile'] . "</td> "; 
Print "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>"; 
} 
 Print "</table>"; 
?> 

我该如何解决这个问题?

9 个答案:

答案 0 :(得分:1)

可能有点晚了,但如果你还没有解决问题,那就行了。

<?php
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("database") or die(mysql_error());

$SQL = "SELECT * FROM members WHERE userName='" . $_SESSION['userName'] . "'" or die(mysql_error());

$data = mysql_query($SQL);
echo "<table border cellpadding=3>";
while ($info = mysql_fetch_array( $data )) {
    echo "<tr>";
    echo "<th>First Name:</th> <td>".$info['fname'] . "</td> ";
    echo "<th>Middle Name:</th> <td>".$info['mname'] . "</td> ";
    echo "<th>Last Name:</th> <td>".$info['lname'] . "</td> ";
    echo "<th>UserName:</th> <td>".$info['userName'] . "</td> ";
    echo "<th>Gender:</th> <td>".$info['gender'] . "</td> ";
    echo "<th>Date Of Birth:</th> <td>".$info['dob'] . "</td> ";
    echo "<th>Mobile Number:</th> <td>".$info['mobile'] . "</td> ";
    echo "<th>Pet:</th> <td>".$info['pet'] . " </td></tr>";
}
echo "</table>"; 
?>

答案 1 :(得分:0)

$SQL="SELECT * FROM members WHERE userName=$_SESSION['userName']"; 
or die(mysql_error()); 

试试这个

$SQL="SELECT * FROM members WHERE userName=$_SESSION['userName']"
or die(mysql_error());

答案 2 :(得分:0)

替换此声明:

    $SQL="SELECT * FROM members WHERE userName=$_SESSION['userName']"; 

有了这个:

    $SQL=mysql_query("SELECT * FROM members WHERE userName='".$_SESSION['userName']."'") 
or die(mysql_error()); 

答案 3 :(得分:0)

试试这个

    $SQL=mysql_query("SELECT * FROM members WHERE userName='".$_SESSION['userName']."'"); 
    or die(mysql_error()); 

答案 4 :(得分:0)

您必须将$ SQL调用更改为:

$SQL="SELECT * FROM members WHERE userName=$_SESSION['userName']" or die(mysql_error()); 

提示: 您正在使用已弃用的mysql_ *函数。切换到mysqliPDO

你永远不应该将变量直接放入你的查询中,因为这可以为sql注入打开一扇门。

改为使用prepared statements

答案 5 :(得分:0)

  $SQL="SELECT * FROM members WHERE `userName`='".$_SESSION['userName']."'";

答案 6 :(得分:0)

您的代码包含一些我想在此强调的问题。

  1. 每当你在SQL中匹配一个字符串时,一定要注意它应该在引号内。
  2. 在单引号内编写SQL,这是一种更好的方法
  3. 由于存在一些Sql注入问题,所以请始终将参数包装在mysql_real_escape sting函数中。
  4. 使用修剪以避免任何错误。
  5. 现在记住所有这些,你的查询就像

    $SQL='SELECT * FROM members WHERE userName=\''.mysql_real_escape_string(trim($_SESSION['userName'])).'\'; 
    

    PS:请不要练习使用mysql_函数,因为它们已被弃用。

答案 7 :(得分:0)

代码中的错误来自第4行代码中的额外“;”。 用这个替换你的线。它应该工作。

$SQL="SELECT * FROM members WHERE userName='" . $_SESSION['userName'] ."'" or die(mysql_error());

答案 8 :(得分:0)

试试这段代码..

$ data = mysql_query(&#34; SELECT * FROM members WHERE userName =&#39;&#34;。$ _ SESSION [&#39; userName&#39;]。&#34;&#39;& #34;)或死(mysql_error());