为什么有些数据不能保存在我的数据库中?

时间:2016-04-03 09:17:36

标签: php mysql sql mysqli

我在保存数据库上的数据方面遇到了问题。我的意思是,例如在我的announcement_request表中,标题,描述,图像路径都保存在数据库中,submittedBybatchYr除外。

我的request_announcement.php是这样的:

<?php

$login_session =$row['username'];
$position = $row['position'];
$login_fname = $row['firstname'];
$login_lname = $row['lastname'];
$batchYr = $row['batchYr'];

$submittedBy = $login_fname.' '.$login_lname;
if(isset($login_session) and $position=='President'){
?>

            <form action="../pres/send_request_announcement.php" method="post" enctype="multipart/form-data">

                <label>Submitted by:</label>
                <input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" disabled > <br/>

                <label>Batch Year:</label>
                <input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" disabled><br/>

<input type="submit" name="submit" value="Request Announcement" style="float: right"/>

                </form>
<?php
}

?>

这是我的send_request_announcement.php:

<?php 
    include_once('db.php');
    if(isset($_POST['submit'])) {

        $submittedBy = $_POST['submittedBy'];
        $batchYr = $_POST['batchYr'];


        $sql = "INSERT INTO announcement_requests (submittedBy, batchYr) VALUES('$submittedBy','$batchYr')";
            mysql_query($sql);

            echo "<script type='text/javascript'>alert('Announcement Request Sent!'); window.location.assign('../user/home.php');</script>";

    }

?>

2 个答案:

答案 0 :(得分:0)

首先,退出使用mysql_*一个您不想习惯使用的已弃用和不良扩展名。

说到为什么它不会被保存到数据库中:
您正在使用mysql_*mysqli_*函数,它们不是同一个库,因此当您使用mysqli连接到数据库时,您将无法将其与{{1}一起使用电话 将所有mysql_*次来电转换为适当的mysql_*来电,它应该会更好。

进一步...查看mysqli_*的php文档中有关prepared statements的章节。它将帮助您预防目前易受攻击的SQL注入。

答案 1 :(得分:0)

我能弄明白什么是错的。即使我有正确的查询,它之所以没有保存在数据库上,是因为我的HTML格式是:

<input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" disabled > <br/>
<input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" disabled > <br/>

disabled这是错误的,因为发送表单时不包含已禁用的文本框,因此我使用了readOnly:

<input type="text" name="submittedBy" class="form-control" value="<?php echo $submittedBy;?>" readOnly="readOnly">
<input type="text" name="batchYr" class="form-control" value="<?php echo $batchYr;?>" readOnly="readOnly">

readOnly也不可编辑。因此,当您想要在数据库中保存数据而无需用户编辑或输入内容时,只需使用readOnly而不是disabled