0

我正在从 mysqlserver 行项中检索数据到输入文本框的值,但在页面加载时该值未显示。而且我似乎无法显示输入框的值。有谁知道出了什么问题?

<?php           
        if(isset($_COOKIE["email"]))
        {               
            $emailAddress = $_COOKIE["email"];
            $password = $_COOKIE["password"];               
            include('connectDB.php');
            $select = "SELECT * FROM P_Profile WHERE P_EmailAddress = '$emailAddress' AND P_Password='$password'";              
            mysql_select_db("lotusbs", GetConnection()) or die(mysql_error());                  
            $result = mysql_query($select) or die(mysql_error());               
            $row = mysql_fetch_array($result)                   
            ?>              
                <div class="signupcontainer">
                    <div class="contentsignup" style="margin-top:20px;">                        
                    <div class="textboxsignup"><span class="signuptbspan" style="Display:none;">First name</span><input value="<?php echo $row['P_FirstName'];?>" name="txtfirstname" id="txtfirstname" type="text"/></div>
                        <div class="signupinfo">Enter first name</div>
                        <div class="signupinfoerror">Must Enter first name</div>
4

3 回答 3

1

尝试调试此脚本,例如:

  1. 通过在 true 子句中回显来检查脚本是否通过了 if( isset($_coo....) 位。

  2. echo $select,在 mysql-query 形成字符串后,在 phpmyadmin 中尝试一下。检查查询是否没有错误,以及传递的变量是否以正确的方式包含在内。

  3. 尝试在关闭 php 之前转储 $row 变量?> 这样,如果将结果传递给行变量,您将不会这样做。

于 2012-04-13T14:56:27.390 回答
1

这里有几种可能性:

  • 该列可能不存在
  • 该行可能不存在
  • 连接可能已失败,或者您可能选择了错误的数据库。

还有一件事你应该考虑改变。您使用 cookie 保存未加密和未编码的密码。这意味着您实际上可以在 cookie 中找到人们的密码。这可能会产生相当大的后果,因为如果用户在其他网站上使用相同的信息,人们可以很容易地破解它们。

于 2012-04-13T15:11:02.850 回答
1

在这样做之前:

$row = mysql_fetch_array($result)

您应该始终检查查询是否已通过执行以下操作从表中获取任何行:

if (mysql_num_rows($result)) {
    // fetch the rows here and do other stuff
}
else {
    echo "Record was not found !";
}

这将告诉您查询返回了一些记录。如果您将输出显示为“找不到记录”,那么您的 SQL 查询有问题。还mysql_fetch_array()为您提供了一个数组,该数组将作为$row[0]. 如果你想像这样以关联数组的形式访问它$row['P_FirstName'],你需要调用函数mysql_fetch_assoc()

于 2012-04-13T16:54:41.150 回答