使用TextArea更新SQL - 仅使用短字符串进行更新

时间:2013-07-21 22:56:49

标签: php html mysql

我在表格中有一个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."')");
}

2 个答案:

答案 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_*pdopdo的好处是,它会自动转义字符串,因此您不必担心它。这反过来使事情变得更加安全而没有忘记逃避某些事情的错误。 (人为错误)

你可以选择以下两个:

MYSQLi_*

PDO MYSQL

原因我建议您可以在此处阅读更改:

MYSQL deprecated in 5.5.0