我正在为一个我似乎无法工作的网站构建一个元素。该页面应该允许用户上传一些在其他地方显示的新闻。显示元素工作正常,但提交部分不是。
在网站上填写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>
),但对于我的项目而言,这并不算太大。我还在学习如何使用预备语句。