只插入到数据库一次然后失败

时间:2011-08-20 21:08:54

标签: php mysql

我有一小段代码。当表为空时,此代码正常工作并输入到表中。但是,如果我再试一次,那么失败并出现错误?

我做错了什么?

由于

// On my Function page

    function admin(){
                    connect();

                    $query = mysql_query("INSERT INTO results 
                    (t_id, pos1, pos2, pos3)
                    VALUES  ('$_POST[t_id]','$_POST[pos1]','$_POST[pos2]','$_POST[pos3]')")
                    or die ("Error.");

                    $b = "Updated fine</b></a>.";

                    return $b;
                        exit();
            }

    // Then on my main page

<?php
    include ('functions.php');
    if (isset($_POST['admin'])){
    $admin = admin();
    }
?>

            <div id="content">
                    <div id="admin">
                        <form action="" method="post">
                            <table width="100%" border="0" align="center" cellpadding="3" cellspacing="1">
                                <tr>
                                    <td width="100%"><?php echo "$admin"; ?></td>
                                </tr>
                                <tr>
                                    <td width="100%"><label>Track <input type="text" name="track" size="25" value="<? echo $_POST[t_id]; ?>"></label></td>
                 </tr>
                                <tr>
                                    <td width="100%"><label>Position 1<input type="text" name="pos1" size="25" value="<? echo $_POST[pos1]; ?>"></label></td>
                                </tr>
                                <tr>
                                    <td width="100%"><label>Position 2 <input type="text" name="pos2" size="25" value="<? echo $_POST[pos2]; ?>"></label></td>
                                </tr>
                                <tr>
                                    <td width="100%"><label>Position 3 <input type="text" name="pos3" size="25" value="<? echo $_POST[pos3]; ?>"></label></td>
                                </tr>
                                <tr>
                                    <td width="100%"><input class="save" type="submit" value="" name="admin"></td>
                                </tr>
                            </table>
                        </form>
                    </div>
                </div>

3 个答案:

答案 0 :(得分:1)

如果没有看到你的表架构,我只能认为你有UNIQUE t_id,并且你想在其中插入相同的ID。

几种调试方式:

  • 使用or die ("Error: " . mysql_error());代替or die ("Error.");
  • 检查您的表架构:SHOW CREATE TABLE tablename并将其写在您的问题上,以便我们查看是否导致错误。

答案 1 :(得分:0)

很难猜到。也许你输入两次相同的值,它们碰巧违反了一些独特的约束条件?

但你犯了另一个错误:你忘了给mysql_real_escape()打电话。那是bad

答案 2 :(得分:0)

你能告诉我们这个错误吗?听起来你可能会遇到主键违规,可能是尝试多次插入相同的ID。

除此之外,您的代码充满了安全漏洞。

您不应该直接从POST将变量插入查询中。我所要做的只是提交'; DROP DATABASE,我可以完全破坏你的系统。

此外,您正在将值直接从POST注入输入字段,这意味着我可以在我的网站上设置一个按钮,提交" <script type='text/javascript'>window.location='http://mysite.com'</script>或其他内容,然后接管您的页面。

这可能听起来很简洁,但你应该用谷歌搜索或拿起一本关于网站的教科书安全问题的书。

编辑:刚看到你关于学习安全性的评论。我的建议是积极主动地处理这类事情,因为反应通常来不及解决问题。