【发布时间】:2014-02-13 16:32:49
【问题描述】:
我对正确的查询脚本有疑问..
我在 page1.php 中创建了一个表单,用户必须在其中输入 fname、mname 和 lname。
page1.php
<form action = "page2.php" method="post" target="<?php $_SERVER['PHP_SELF']?>">
First Name:<input type="text" name="fname"/>
Middle Name:<input type="text" name="mname"/>
Last Name:<input class = "type="text" name="lname"/>
<input type="submit" name="submit" value="NEXT" />
</form>
条目被发送到 page2.php 以插入到数据库中。处理成功后。我在成功插入值后放置了一个条件,它会自动转到 page3.php。
page2.php
<?php
include('config.php');
if(isset($_POST['submit']))
{
$fname = ucwords(strtolower($_POST['fname']));
$lname = ucwords(strtolower($_POST['lname']));
$mname = ucwords(strtolower($_POST['mname']));
$submit=$_POST['submit'];
if(empty($fname) || empty($lname) || empty($mname))
{
echo '<b>Please fill out the form completely.</b>';
}
else
{
$dup = mysql_query("SELECT *
FROM
tbl
WHERE
fname = '$fname'
AND
lname = '$lname'
AND
mname = '$mname'
");
if(mysql_num_rows($dup) >0)
{
echo "<br/>";
echo '<b>Already Registered.</b>';
echo "<br/>";
}
else
{
$sql = mysql_query("INSERT INTO tbl(fname,lname,mname) VALUES('$fname','$lname','$mname')");
if($sql)
{
echo "<br/>";
echo "You have successfully added your new name!";
echo "<br/>";
header("Location: page3.php?fname= $fname&mname= $mname &lname= $lname");
}
else
{
echo "Error Registration";
header("Location: index.php");
}
}
}
}
?>
这些值也将由:
header("Location: page3.php?fname= $fname&mname= $mname &lname= $lname");
紧跟在:
之后$sql = mysql_query("INSERT INTO tbl(fname,lname,mname)VALUES('$fname','$lname','$mname')");
然后转到下一页。
在page3.php中,为了验证我是否还有我使用的值:
echo '<pre>' . print_r($_GET,true) . '</pre>';
我还有它们。
现在,在 page3.php 中,我想调用从 page2.php 成功插入值后创建的 auto_incremented ID。
<?php
echo '<pre>' . print_r($_GET,true) . '</pre>';
include('config.php');
$fname = $_GET['fname'];
$mname = $_GET['mname'];
$lname = $_GET['lname'];
$sql = mysql_query("SELECT * FROM tbl WHERE fname = '$fname' AND mname = '$mname' AND lname = '$lname'");
while ($row = mysql_fetch_array($sql))
{
echo $row['id'];
}
?>
现在,问题是我的查询没有结果。当我尝试这是脚本时:
$sql = mysql_query("SELECT * FROM tbl");
我有结果显示出来了。
我想做的是这个,我希望条件完全满足,即fname,mname,lname。必须满足 3 个字段,以便我可以从具有这些字段的表中获取指定的 ID。就像您查询全名并为您获取 ID 一样。您应该插入所有 3 个字段以获得该给定名称的确切 ID。
我的问题可能出在这里:
$sql = mysql_query("SELECT * FROM tbl WHERE fname = '$fname' AND mname = '$mname' AND lname = '$lname'");
while ($row = mysql_fetch_array($sql))
{
echo $row['id'];
}
就像你让 John Rogers Smith 从数据库中找出你的 ID。
你能帮帮我吗?我不明白为什么它不起作用。
Tnx 伙计们提前。
【问题讨论】:
-
这里有语法错误:
Last Name:<input class = "type="text" name="lname"/> -
忠告,使用 mysqli 扩展而不是 mysql 扩展。 mysql 扩展在 PHP 的最新版本 5.5.x 中被弃用。 php.net/manual/en/intro.mysql.php
-
你也可能在 url 参数中有错误的值。所以尝试只打印 $_GET 变量并检查你是否有正确的值
-
arkascha class= 将被忽略,因为它仅用于 css 目的。 tnx 反正
-
Lex,我知道 mysql 扩展已贬值,但同时我正在练习旧扩展。我迟早会使用 mysqli 扩展 tnx