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


Selected text from database does not update

我正在尝试将已选择并显示在TextArea中的文本更新到数据库中。文本被选中并显示,因此connection.php没有任何问题。但当我更改文本并按save时,它不会更新数据库中的文本,但它显示数据存储在变量$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)。

"好吧,这修复了我的错误输出!谢谢!我得到的错误是:您的SQL语法有错误;请查看与MariaDB服务器版本对应的手册,在第1行的'text'='test'附近使用正确的语法。–Ahnkheg"

此行:

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

text列有正则引号,不是正确的标识符。这是一列,而不是一个值。

使用记号:

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

或删除它们:

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

附带说明:您当前的代码对SQL注入是开放的。将mysqli与准备好的语句一起使用,或将PDO与准备好语句一起使用它们要安全得多


您还有一个丢失的</form>标记。这将产生不利影响。您也在与mysql_error()混合。应该是mysqli_error($conn)

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