数据库中的选定文本不会更新

时间:2015-04-07 14:10:20

标签: php

我正在尝试将我选择并在TextArea中显示的文本更新到我的数据库中。选择并显示文本,因此connection.php没有任何问题。但是当我更改文本并按下保存时,它不会更新数据库中的文本,但是它显示数据存储在变量$ tekstArea和$ tekstIDArea中。谁能帮助我?

这是我的代码:

<?php
    session_start();
    include "connection.php";
?>


<?php   
        //Get Resulsts from database
        $query = "SELECT * FROM tekst";
	    $result = mysqli_query($conn, $query);
        
        while ($row = mysqli_fetch_array($result)) {
            $tekstID = $row['tekstID'];
            $text = $row['text'];
			
            echo "<form method='POST' action=''>
            <input name='tekstIDArea' value=" . $tekstID . ">
            <br />
            <textarea name='textArea' rows='20'>" . $text . "</textarea>
            <br />
            <button type='submit' name='submit' class='btn'>Save</button><br /><br />";

        }

if (isset($_POST['submit'])) {
            
    $tekstArea = $_POST['textArea'];
    $tekstIDArea = $_POST['tekstIDArea'];
    $sql = "UPDATE tekst SET 'text' = '$tekstArea'";
    $res = mysqli_query($conn, $sql);
    
    if(!$res)
    {
        echo "Could not update" . mysql_error() . "<br />";
        echo $tekstArea . "<br />";
        echo $tekstIDArea . "<br />";
    }
    mysqli_close($conn);
}
?>
            

提前致谢,

Ahnkheg

编辑:添加了表单结束标记。 将mysql_error()更改为mysqli_error($ conn)。

1 个答案:

答案 0 :(得分:2)

  

&#34;好的,这修正了我的错误输出!谢谢!我得到的错误是:您的SQL语法有错误;查看与您的MariaDB服务器版本对应的手册,以获得在&#39;&#39; text&#39;附近使用的正确语法。 =&#39;测试&#39;&#39;在第1行。 - Ahnkheg&#34;

这一行:

$sql = "UPDATE tekst SET 'text' = '$tekstArea'";

text列有常规引号,并且不是正确的identifiers。这是一列而不是一个值。

使用刻度线:

$sql = "UPDATE tekst SET `text` = '$tekstArea'";

或删除它们:

$sql = "UPDATE tekst SET text = '$tekstArea'";

旁注:您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements他们更安全


您还缺少</form>标记。这将产生不利影响。您还要与mysql_error()混在一起。那应该是mysqli_error($conn)

  • 那些不同的MySQL API不会相互混合。