我正在尝试更新SQL数据库中的值。但有些东西不起作用,但我不知道为什么。这是insert.php:
<?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.";
}
?>
答案 0 :(得分:1)
除了你正在混合使用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=?";
然后准备此语句,将变量绑定到占位符(问号)并执行它。
答案 1 :(得分:0)
尝试从喜欢或不喜欢中删除引用:
$sql1 = "UPDATE artikel SET likes=likes+1 WHERE id='$id'";
$sql2 = "UPDATE artikel SET dislikes=dislikes+1 WHERE id='$id'";