我有一个表格,人们可以订阅或取消订阅时事通讯(这是有效的)。问题是,当我想将数据插入数据库时,我遇到了问题。表格本身是这样的:
<form action="subscriptionsedit2.php?CusID=<?=$_GET[">
" name="frmEdit" method="post"> <?php
$objConnect = mysql_connect("localhost","root","root") or die(mysql_error());
$objDB = mysql_select_db("NAW");
$strSQL1 = "SELECT ID, Titel FROM Mail";
$strSQL = "SELECT * FROM Klant WHERE ID = '".$_GET["ID"]."' ";
$objQuery = mysql_query($strSQL);
$objQuery1 = mysql_query($strSQL1);
$objResult = mysql_fetch_array($objQuery);
if(!$objResult)
{
echo "Not found ID=".$_GET["ID"];
}
else
{
?>
<fieldset>
<legend>Wijzig</legend>
<table width="600" border="1">
<tr>
<th width="91">
<div align="center">
ID
</div>
</th>
</tr>
<tr>
<td>
<div align="center">
<?=$objResult["ID"];?>
</div>
</td>
</tr>
</table><br>
<table width="600" border="1">
<tr>
<th width="91">
<div align="center">
ID
</div>
</th>
<th width="91">
<div align="center">
Subscribe
</div>
</th>
<th width="91">
<div align="center">
Unsubscribe
</div>
</th>
</tr><?php
$i = 0;
while($objResult1 = mysql_fetch_array($objQuery1))
{
$i++;
?>
<tr>
<td>
<div align="center">
<?=$objResult1["ID"];?>
</div>
</td>
<td>
<div align="center">
<input type="checkbox" name="sub" value="10">
</div>
</td>
<td>
<div align="center">
<input type="checkbox" name="sub" value="90">
</div>
</td>
</tr><?php
}
?>
</table>
</fieldset><!-- content --><input type="submit" name="submit" value="Submit"> <input type="button" name="cancel" value="Cancel" onclick="window.location='klanten.php'"> <?php
}
mysql_close($objConnect);
?>
</form>
在subscriptionsedit2.php上数据将被插入数据库中,如下所示:
mysql_connect('localhost','root','root');
mysql_select_db('NAW') or die (mysql_error());
$Klant_ID = $objResult["ID"];
$Mail_ID = $objResult1["ID"];
$Status = $_POST['sub'];
$Datum = date("d-m-y");
$sql = mysql_query("INSERT INTO Subscriptions (Klant_ID, Mail_ID, Status, Datum) VALUES ('".$Klant_ID."', '".$Mail_ID."', '".$Status."', '".$Datum."')") or die (mysql_error());
这是我得到的错误:注意:未定义的变量:第16行的/var/www/Mail/subscriptionsedit2.php中的objResult注意:未定义的变量:第17行的/var/www/Mail/subscriptionsedit2.php中的objResult1
正如您所看到的,变量$ Klant_ID和$ Mail_ID中没有任何值。所以我的问题是如何正确地将Klant_ID(<?=$objResult["ID"];?>
)和Mail_ID(<?=$objResult1["ID"];?>
)存储到变量中?我希望这个问题很清楚,但如果你对此有任何疑问,请发表评论^^。如果有人知道如何做到这一点就会很棒!
答案 0 :(得分:1)
BTW mysql,mysqli或PDO,提交表单时$objResult["ID"]
不存在!
必须使用post var传输您的表单。
在提交表单时,您必须执行以下操作来传输您的变量:
<input type"text" name="objResult" value="<?php echo $objResult["ID"]; ?>" />
然后您可以使用subscriptionsedit2.php
$_POST['objResult']
中访问它
修改强>
如果您不想显示它,请隐藏此输入:
<input type"hidden" name="objResult" value="<?php echo $objResult["ID"]; ?>" />
答案 1 :(得分:0)
您的应用很容易受到注射攻击。
首先,永远不要,永远不要在SQL语句中使用原始$GET_
和$POST_
值。
其次:使用mysqli_
代替mysql_
- mysql_
已被弃用并被删除。
第三:如果您必须使用mysql_
,请务必使用mysql_real_escape_string
第四:如果要插入数据库中的整数字段,请不要在值周围使用引号。
第五:我不确定你的各种代码片段在哪里相互关联,但是尝试将$Klant_ID
和$Mail_ID
的值转储到日志文件中,这样你就可以确保他们实际拥有其中的价值观。问题可能在代码中更早,而不是在SQL语句区域本身。