我在程序化PHP中创建了一个简单的博客系统,用户可以在其中创建新帖子,查看现有帖子,因此它是一个CRUD系统。
所以这是我的代码:
if(isset($_POST['submit'])) {
$titel = $_POST['titel'];
$kortbeskrivelse = $_POST['kortbeskrivelse'];
$skrib = $_POST['skrib'];
$post = $_POST['post'];
$update = "UPDATE posts SET ";
$update .= "title = '{$titel}', ";
$update .= "kortbe = '{$korbeskrivelse}', ";
$update .= "author = '{$skrib}', ";
$update .= "beskrivelse = '{$post}', ";
$update .= "WHERE id=$pid LIMIT 1";
$updateresult = mysqli_query($conn, $update);
if (mysqli_query($conn, $updateresult)) {
echo "New record created successfully";
} else {
echo "Error: " . $updateresult . "<br>" . mysqli_error($conn);
}
}
因此,为了解释查询,我正在使用从POST表单传递的变量来更新帖子。
$ pid变量,用于确保它正在更新正确的帖子(我在sql查询之前声明了它)
我没有收到任何PHP错误,并且连接效果很好。 这是SQL错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id= LIMIT 1' at line 1
所以这有点令人困惑,我担心这是一个错误40(人为错误:D)
我知道它非常不安全,它也用于展示注射等。
我希望有人可以帮助我!
提前感谢!
答案 0 :(得分:0)
此行$update .= "beskrivelse = '{$post}', ";
中有一个逗号。尝试删除它:
$update .= "beskrivelse = '{$post}' ";
答案 1 :(得分:0)
$update = "UPDATE posts SET ";
$update .= "title = '$titel', ";
$update .= "kortbe = '$korbeskrivelse', ";
$update .= "author = '$skrib', ";
$update .= "beskrivelse = '$_POST[beskrivelse]' ";
$update .= "WHERE id=$pid LIMIT 1";
更改您的代码,不要在查询中使用{}括号,并从上次$ update中删除','并在'$ pid'中加入一些值
答案 2 :(得分:0)
试试这个:
$update .= "WHERE id={$pid} LIMIT 1";
带有$ pid的文本格式不会返回&#34; PID&#34;价值,但文字&#39; $ pid&#39;。
答案 3 :(得分:0)
您的MySQL服务器版本,以便在第1行的“WHERE id = LIMIT 1”附近使用正确的语法
仔细观察,你会注意到id=
。 =
操作没有右值。出于某种原因,您的$pid
为空。代码段不会显示$pid
的来源。
除此之外,在最后一栏之后你也有一个逗号。
$update = "UPDATE posts SET ";
$update .= "title = '{$titel}', ";
$update .= "kortbe = '{$korbeskrivelse}', ";
$update .= "author = '{$skrib}', ";
$update .= "beskrivelse = '{$post}' "; // removed comma
$update .= "WHERE id=$pid LIMIT 1";
此外,您构建查询的方式,您的应用程序是易受攻击的。阅读"SQL Injection"并修复代码以使用参数化查询而不是字符串连接。