我正在尝试将已选择并显示在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不会相互混合