0

我有一个表格,人们可以订阅或取消订阅时事通讯(这有效)。问题是,当我想将数据插入数据库时​​,我遇到了问题。表格本身是这样的:

<form action="subscriptionsedit2.php?CusID=&lt;?=$_GET[">
    " name="frmEdit" method="post"&gt; <?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"];?>) 存储到变量中?我希望这个问题足够清楚,但是如果您对此有任何疑问,请发表评论^^。如果有人知道如何做到这一点,那就太好了!

4

2 回答 2

1

BTW mysql、mysqli 或 PDO,$objResult["ID"]提交表单时不存在!

它必须通过您的表单与 post var 一起传输。

在提交表单时,您必须执行以下操作来传输您的变量:

<input type"text" name="objResult" value="<?php echo $objResult["ID"]; ?>" />

然后你可以在你的subscriptionsedit2.phpwith中访问它$_POST['objResult']

编辑

如果您不想显示它,请隐藏此输入:

<input type"hidden" name="objResult" value="<?php echo $objResult["ID"]; ?>" />
于 2013-03-19T14:40:39.990 回答
0

您的应用程序非常容易受到注入攻击。

首先,从不,从不,永远不要在你的 SQL 语句中使用原始值$GET_和值。$POST_

其次:使用mysqli_而不是mysql_ -mysql_已被弃用并被删除。

第三:如果必须使用mysql_,请确保使用mysql_real_escape_string

第四:如果您要插入数据库中的整数字段,请不要在值周围使用引号。

第五:我不确定您的各种代码片段在哪里相互关联,但请尝试将$Klant_ID和的值转储$Mail_ID到日志文件中,这样您就可以确保它们实际上具有其中的值。问题可能出在代码的早期,而不是 SQL 语句区域本身。

于 2013-03-19T14:25:15.653 回答