PHP脚本,用于通知客户端名称是否在数据库中

时间:2013-12-01 21:19:48

标签: php mysql

我是PHP编码的新手,所以请耐心等待。我有一个MySQL数据库,它是名单,生日,家属和SSN的列表 我创建了一个简单的表单,只有一个名称和提交按钮的文本框。 我希望我的PHP脚本检查数据库,如果没有名称,它应该返回一条消息,说“你的名字没有列出”;否则它应该返回客户的姓名和他们的出生日期。 我编写的代码返回完整的名称和生日列表,无论我在文本框中输入什么。为什么这样做,我在哪里犯了错误?

响应如下: 乔豆 您的出生日期是:1988-11-05  丹妮尔戴维斯 您的出生日期是:1944-12-13  安吉拉·道内尔 您的出生日期是:1988-09-24  大卫德帕利 你的出生日期是:1988-10-15 ......等等

我的PHP代码:

<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_query("USE myDatabase");  
$s = mysql_query("SELECT * FROM myTable ORDER BY lastname");                 
$rows=mysql_numrows($s);
for($i = 0; $i < $rows; $i++)
{
$f=(mysql_result($s,$i,"firstname"));                  
$l=(mysql_result($s,$i,"lastname"));
$b=(mysql_result($s,$i,"birthdate"));
if($rows == 0)
{
print $l. " Your name is not listed.";
}
else
{print "<br /> $f " . "$l";
print "<br />Your date of birth is: " . $b;
}   
}  
// mysql_query("DROP DATABASE myDatabase") or die(mysql_error());            
mysql_close();     
?>

我的HTML是:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<form action="http://localhost/proj10.php" method="post">
<label for="fname">Name: </label>
<input type="text" name="lname" id="lname" size="20"><br><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;
<input type="submit" name="submit" id="submit" value="     Submit       "onclick = "check  ('lname');">
</form>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

首先不要使用像user4035这样的mysql_ *函数。 PDO允许您设计更灵活的脚本,因为它们可以使用更多的数据库而不仅仅是MySQL。

如果你真的想使用程序编码风格,那么你就是这样做的:

$fname = $_POST['fname'];  //you seem to not have a first name input as well in your form
$lname = $_POST['lname'];
$query = mysql_query("SELECT * FROM myTable WHERE firstname='$fname' AND lastname='$lname'");

在返回所有结果后,您不会使用任何搜索参数进行查询。 您还可以添加&#34; if&#34;拉结果后的陈述。

...
$b=(mysql_result($s,$i,"birthdate"));
if($f==$fname&&$;==$lname){ //same result but don't do this.
...

答案 1 :(得分:0)

即使您可以使用mysql_ ()作为测试目的,也应该在代码的生命周期内迁移到mysqli _ ()或PDO。不过,从PHP的角度来看,代码中存在错误:

<?php
$lname = isset($_POST["lname"]) ? $_POST["lname"] : "";
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("myDatabase");
$s = mysql_query("SELECT * FROM myTable
  WHERE lastname LIKE '%$lname%'
  ORDER BY lastname;");
$rows = mysql_num_rows($s);
if($rows == 0)
{
  echo $lname . " Your name is not listed.";
}
else
{
  while($row = mysql_fetch_assoc($s))
  {
    $f = $row["firstname"];                  
    $l = $row["lastname"];                  
    $b = $row["birthdate"];                  
    echo "<br /> $f " . $l
      .  "<br />Your date of birth is: " . $b;
  }
}  
//
mysql_close();     
?>

我们使用lastname LIKE'%$ lname%'来选择输入用户名。

另外,请不要忘记在onclick =:

之前添加一个空格
<input type="submit" name="submit" id="submit" value="     Submit       "onclick = "check  ('lname');">

==&GT;

<input type="submit" name="submit" id="submit" value="     Submit       " onclick="check('lname');">