我正在尝试更新SQL数据库中的一个值。但有些东西不起作用,但我不知道为什么。这是插入。hp:
<?php
session_start();
header('content-type: text/html; charset=utf-8');
$id = $_GET["id"];
$rating = $_GET["rating"];
$con = mysql_connect("localhost", "...", "...");
mysql_select_db('...',$con);
mysql_query("SET NAMES 'utf8'");
echo mysql_error();
if($rating=='likes' || $rating=='dislikes'){
if($rating=='likes'){
$sql1 = "UPDATE artikel SET likes='likes+1' WHERE id='$id'";
mysqli_query($con, $sql1);
echo "Danke für deine Bewertung!";
} else {
$sql2 = "UPDATE artikel SET dislikes='dislikes+1' WHERE id='$id'";
mysqli_query($con, $sql2);
echo "Danke für deine Bewertung! Nutze doch auch die Kommentarfunktion, um uns zu sagen was dir nicht gefallen hat.";
}} else {
echo "Es ist ein Fehler aufgetreten. Probiere es bitte noch einmal.";
}
?>
除了注释中提到的混合mysqli和mysql(仅使用mysqli或PDO)之外,您的sql:中存在逻辑错误
$sql1 = "UPDATE artikel SET likes='likes+1' WHERE id='$id'";
这将尝试将likes
字段的值设置为字符串"likes+1"
。如果你想更新你的likes
值,你需要删除引号:
$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id='$id'";
这同样适用于您的其他sql语句。
除此之外,您还存在sql注入问题。您应该只使用PDO或mysqli,并使用准备好的语句。然后你的声明看起来像:
$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id=?";
然后准备这个语句,将变量绑定到占位符(问号)并执行它
尝试删除喜欢或不喜欢的引用:
$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id='$id'";
$sql2 = "UPDATE artikel SET dislikes=dislikes+1 WHERE id='$id'";