错误是更新项目时sql的语法

时间:2015-12-22 22:36:37

标签: php mysqli

我正在尝试编辑项目,但我一直收到错误消息: 您的SQL语法有错误;查看与MySQL服务器版本对应的手册,以获得正确的语法。

我在google上搜索了我的语法问题是什么,但我看不出问题。

任何人都可以帮助我吗?

提前致谢!

<?php
    if ( isset($_POST['ga']) ) {
        $artikel = new artikel();

        $artikel->id = $_SESSION['id'];
        $artikel->artNaam = $_POST['naam'];
        $artikel->artOmschrijving = $_POST['oms'];
        $artikel->artOmsKort = $_POST['omsKort'];
        $artikel->artPrijs = $_POST['prijs'];
        $artikel->artCategorie = $_POST['categorie'];

        $sql = "update items set 
            artNaam='$artikel->artNaam', 
            artOmschrijving='$artikel->artOmschrijving', 
            artOmsKort='$artikel->artOmsKort', 
            artPrijs=$artikel->artPrijs, 
            artCategorie='$artikel->artCategorie' 
            where id=$artikel->id";

        if ( $conn->query($sql) ) {
            header('Location: wijzigArtikel.php?'.$artikel->id);                    
        } else {
            die($conn->error);
        }

        unset($_SESSION['id']);
    }
?>

2 个答案:

答案 0 :(得分:2)

其中一个字符串值可能有引号。由于你使用的是mysqli,你应该使用预备语句而不是替换变量。

$stmt = $conn->prepare("update items set 
        artNaam=?, 
        artOmschrijving=?, 
        artOmsKort=?, 
        artPrijs=?, 
        artCategorie=? 
        where id=?";
$stmt->bind_param("sssisi", $artikel->artNaam, $artikel->artOmschriving,
            $artikel->artOmsKort, $artikel->artPrijs, $artikel->artCategorie,
            $artikel->id);
if ($stmt->execute()) {
    header('Location: wijzigArtikel.php?'.$artikel->id);                    
} else {
    die($conn->error);
}

unset($_SESSION['id']);

答案 1 :(得分:-2)

请改为尝试:

 $sql = "update items set 
            artNaam='".$artikel->artNaam."', 
            artOmschrijving='".$artikel->artOmschrijving."', 
            artOmsKort='".$artikel->artOmsKort."', 
            artPrijs=$artikel->artPrijs, 
            artCategorie='".$artikel->artCategorie,"' 
            where id=$artikel->id";

字符串中的变量不能用单引号,单引号只能写$ artikel-&gt; artNaam不是值。