繁体   English   中英

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

[英]Error is syntax of sql when updating item

我正在尝试编辑项目,但我不断收到错误消息: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']);
    }
?>

其中一个字符串值中可能有一个引号。 由于您使用的是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']);

试试这个代替:

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

字符串中的变量不能用单引号引起来,仅单引号将写$ artikel-> artNaam代替值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM