包含PHP准备语句的HTML表单丢失$ _POST数据

时间:2018-04-04 14:33:59

标签: php html pdo

我正在为一个我似乎无法工作的网站构建一个元素。该页面应该允许用户上传一些在其他地方显示的新闻。显示元素工作正常,但提交部分不是。

在网站上填写HTML表单并单击“提交”后,出现错误:

  

错误:SQLSTATE [23000]:完整性约束违规:1048列'title'不能为空

我理解这是一个数据处理错误,但我似乎无法找到源代码。如果我将$_POST["title"]更改为实际值,它将跳过该部分,并给出相同的错误,但是对于下一个字段。如果我用值替换每个$_POST,则该语句将起作用。我觉得这是从HTML页面到PHP页面传输数据的问题。没有涉及JS,服务器在本地网络上,并且完全相同的服务器正在运行旧版本的站点,它不完全使用预准备语句。

继承PHP代码:

<?php

$servername = "localhost";
$username = "myUsernameHere";
$password = "myPasswordHere";
$dbname = "myDBnameHere";


try {
    $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
    // set the PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // prepare sql and bind parameters
    $stmt = $conn->prepare("INSERT INTO home_news (title, body, author, datePost, dateValid) 
    VALUES (:title, :body, :author, :datePost, :dateValid)");
    $stmt->bindParam(':title', $title);
    $stmt->bindParam(':body', $body);
    $stmt->bindParam(':author', $author);
    $stmt->bindParam(':datePost', $datePost);
    $stmt->bindParam(':dateValid', $dateValid);

    // insert a row
    $title = $_POST["title"];
    $body = $_POST["body"];
    $author = $_POST["author"];
    $datePost = $_POST["dateP"];
    $dateValid = $_POST["dateV"];
    $stmt->execute();


    echo "New records created successfully";
    }
catch(PDOException $e)
    {
    echo "Error: " . $e->getMessage();
    }
$conn = null;

?>

继续我的HTML代码:

<form action="submitNews.php" method="POST">
                    <table class="subTable" align="center">
                        <tr>
                            <td><input type="text" name="title" id="newsTitle" placeholder="News Title"></td>
                            <td><input type="text" name="author" id="newsAuth" placeholder="Author"></td>
                        </tr>
                        <tr>
                            <td colspan="2"><textarea form="news" name="body" cols="42" rows="5" placeholder="Main Body"></textarea></td>
                        </tr>
                        <tr>
                            <td><label>When should this news be visible from?</label><br /><input type="date" name="dateV" id="newsDateV" value="<?php echo date('Y-m-d'); ?>"></td>
                            <td><label>When should this news be no longer visible?</label><br /><input type="date" name="dateP" id="newsDateP" value="<?php echo date('Y-m-d'); ?>"></td>
                        </tr>
                        <tr>
                            <td colspan="2"><input type="submit" name="submit"></td>
                            <td></td>
                        </tr>
                    </table>
                </form> 

我想象我忽略了一些愚蠢的东西,但我真的很感激任何意见。我知道可能存在过时的代码(如<font>),但对于我的项目而言,这并不算太大。我还在学习如何使用预备语句。

0 个答案:

没有答案