0

我有一个表单中的文本区域。该表单在提交时会将一些信息插入到数据库中。即使“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>

插入:

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."')");
}
4

2 回答 2

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是,它会自动转义字符串,因此您不必担心。这反过来又使事情更加安全,而不会忘记逃避某些事情。(人为错误)

这里有两个你可以选择:

MYSQLi_*

PDO MYSQL

我建议更改的原因可以在这里阅读:

MYSQL 在 5.5.0 中已弃用

于 2013-07-24T02:43:34.380 回答
0

问题已解决。这不是字符的数量,而是字符的类型。

我在字符串中使用了引号。这使我的 SQL 语句过早结束。

哎呀。

于 2013-07-21T23:05:49.270 回答