我在表格中有一个textarea。该表单在提交后会在数据库中插入一些信息。尽管“newsText”是一个长篇文章,但我只能插入短字符串。我会用确切的字符数更新这个问题。
表格:
<form id="newsForm" action="<?php echo $uploadHandler ?>" enctype="multipart/form-data" method="post">
<div class="managementNewsTitle">
Title<br />
<input id="inputNewsTitle" name="inputNewsTitle" type="text"></input>
</div>
<div class="managementNewsTitle">
Image<br />
<input id="inputNewsFile" type="file" name="file" onchange="document.getElementById('inputNewsFilename').value = value;"><br />
Name<br />
<input id="inputNewsFilename" type="text"></input>
</div>
<div class="managementNewsTitle">
Text<br />
<textarea id="inputNewsText" name="inputNewsText"></textarea>
</div>
<input type="hidden" name="givenFileName" id="givenFileName" value="">
<input type="hidden" name="MAX_FILE_SIZE" value="<?php echo $max_file_size; ?>">
<input type="hidden" name="newsSubmitValue" id="submitValue" value="no">
<input type="button" id="newsSubmitButton" onclick="newsSubmit()" name="submitButton" value="Save"></input>
</form>
INSERT:
if($_POST['newsSubmitValue'] === "yes") {
$newsTitle = $_POST['inputNewsTitle'];
$newsText = $_POST['inputNewsText'];
$newsImageURL = $_POST['givenFileName'];
mysql_query("INSERT INTO cs_news VALUES (DEFAULT, CURRENT_TIMESTAMP, '".$newsTitle."', '".$newsText."', 'Images/".$newsImageURL."')");
}
答案 0 :(得分:0)
问题已经解决了。它不是字符数量,而是字符的类型。
我在字符串中使用了引号。这使我的SQL语句提前结束。
Woops。
答案 1 :(得分:0)
我应该提到一些事情:
您需要使用此php函数转义对查询的输入:
mysql_escape_string()
if($_POST['newsSubmitValue'] === "yes") {
$newsTitle = mysql_escape_string($_POST['inputNewsTitle']);
$newsText = mysql_escape_string($_POST['inputNewsText']);
$newsImageURL = mysql_escape_string($_POST['givenFileName']);
mysql_query("INSERT INTO cs_news VALUES (DEFAULT, CURRENT_TIMESTAMP, '".$newsTitle."', '".$newsText."', 'Images/".$newsImageURL."')");
}
您还在使用我不推荐的mysql_*
。您应该考虑使用mysqli_*
或pdo
。 pdo
的好处是,它会自动转义字符串,因此您不必担心它。这反过来使事情变得更加安全而没有忘记逃避某些事情的错误。 (人为错误)
你可以选择以下两个:
原因我建议您可以在此处阅读更改: