我正在从 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>
例如,尝试调试此脚本:
-
检查脚本是否通过在 true 子句内回显来传递 if(isset($_coo....) 位。
-
echo $select,在 mysql-query 形成字符串之后,在 phpmyadmin 中尝试一下。检查查询是否无错误,以及传递的变量是否以正确的方式包含在内。
-
尝试在关闭 php 之前转储 $row 变量>这样,如果结果被传递给行变量,您将不会。
这里有几种可能性:
- 该列可能不存在
- 该行可能不存在
- 连接可能已失败,或者您可能选择了错误的数据库。
一件事你应该考虑改变。您保存的密码未加密且未使用 Cookie 编码。这意味着您实际上可以在 cookie 中找到人们的密码。这可能会产生相当大的后果,因为如果用户在其他网站上使用相同的信息,人们可以很容易地破解它们。
在执行此操作之前:
$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()
。