我是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>
<input type="submit" name="submit" id="submit" value=" Submit "onclick = "check ('lname');">
</form>
</body>
</html>
答案 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');">