如果,MySQL UPDATE不能与PHP一起使用

时间:2015-04-08 08:16:02

标签: php mysql

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


?>

2 个答案:

答案 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'";