我正在尝试将我选择并在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)。
答案 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 statements或PDO with prepared statements,他们更安全。
您还缺少</form>
标记。这将产生不利影响。您还要与mysql_error()
混在一起。那应该是mysqli_error($conn)
。