MySQL UPDATE没有';如果


MySQL UPDATE doesn't work with PHP if

我正在尝试更新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'";