我有一个表单,它将数据从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'];
答案 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