PHP使用表单传递数据

时间:2015-06-25 04:59:05

标签: php

我有一个表单,它将数据从index.php传递给update.php。代码成功通过了出生日期变量,但它没有通过$ leadid变量。我的代码出了什么问题?

index.php中的部分代码

<form method="post" action="update.php">
<table width="400" border="0" cellspacing="1" cellpadding="2">

<tr>
<td width="100">Lead ID</td>
<td>
<?php

mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$sql = "SELECT leadid FROM table WHERE lead_no ='$lead_no'";
$result = mysql_query($sql);
$row = mysql_fetch_row($result);
$leadid = $row[0];

echo $leadid;

?>
</td>
</tr>

<tr>
<td width="100">Date of Birth</td>
<td><input name="birth" type="date" id="birth"></td>
</tr>
</table>
</form>

在我的update.php中,我有POST

 $id = $_POST['leadid'];
 $birth = $_POST['birth'];

2 个答案:

答案 0 :(得分:4)

在您的代码中,leadid变量没有输入字段。尝试添加如下隐藏字段:

<input type="hidden" value="<?php echo $leadid;?>" name="leadid" />

然后,应传输该POST变量。

答案 1 :(得分:2)

Post只会传递由<input>标记内的<textarea> <form>others等html表单元素包装的变量。

由于您没有为$leadid变量创建此类标记,因此update.php文件无法使用此标记。

将以下代码放在<form>标记内,以将leadid传递给第二个脚本。

<input type="hidden" value="<?php echo $leadid;?>" name="leadid" />

与您的数据库查询有关:建议使用预准备语句而不是未准备好的语句。您当前从数据库中选择值的方式是一个巨大的安全漏洞,可能会被滥用于SQL注入!我知道您目前正在使用它进行本地测试,但了解代码可能会导致安全问题非常重要。 以下是有关如何使用预准备语句执行此操作的示例:

$mysqli = new mysqli('localhost', 'root', '');
$stmt = $mysqli->prepare("SELECT leadid FROM table WHERE lead_no = ?");
$stmt->bind_param("i", $lead_no); // assuming lead_no is an integer value
$stmt->execute();
$stmt->bind_result($leadid);
$stmt->fetch();

// your lead id is now stored inside $leadid

可在此处找到更多信息:http://php.net/manual/de/mysqli.quickstart.prepared-statements.php