SQL语法错误;查看与您的MariaDB服务器版本对应的手册,以获得在''附近使用的正确语法。在第1行

时间:2017-11-03 01:32:21

标签: sql mariadb

我是php的新手,对于我的生活,我无法通过以下代码解决我的问题。请帮帮我!不胜感激。

"您的SQL语法出错了;查看与您的MariaDB服务器版本对应的手册,以获得正确的语法,以便在附近使用#39; ' 0')'在第1行"

<?php
session_start();
if ($_SESSION['admin']!=NULL)
{
    include_once('functions/dbFunctions.php');
    $category = addslashes($_POST['category']);
    $subcat = addslashes($_POST['subcat']);
    $pname = addslashes($_POST['pname']);
    $content = addslashes($_POST['content']);
    $meta_title = addslashes($_POST['meta_title']);
    $meta_description = addslashes($_POST['meta_description']);
    $schema = addslashes($_POST['schema']);
    $sql="INSERT INTO `product_tbl` (`product_name`, `product_details`,`product_cat`, `product_sub_cat`, `meta_title`, `meta_description`, `schema`, `product_status`) VALUES ('$pname', '$content', $category', '$subcat', '$meta_title', '$meta_description', '$schema', '0');";
    $ins=insert_update($sql);
    if($ins=='OK')
        {
            $msg="<strong>{$pname}</strong> details updated successfully";
            header('location:index.php?page=135&a=1&m='.$msg);
        }
        else
        {
            $msg="Oops!.echo $ins";
            header('location:index.php?page=122&a=2&m='.$msg);
        }
}
else
{
    $msg="Invalid access. You must login to continue!";
    header("location:login.php?msg=".$msg);
}
?>

2 个答案:

答案 0 :(得分:1)

如果你正确缩进,很容易看出错误的原因。

$sql = 
"INSERT INTO `product_tbl` (
    `product_name`
    , `product_details`
    ,`product_cat`
    , `product_sub_cat`
    , `meta_title`
    , `meta_description`
    , `schema`
    , `product_status`
) VALUES (
    '$pname'
    , '$content'
    , $category'
    , '$subcat'
    , '$meta_title'
    , '$meta_description'
    , '$schema'
    , '0'
);"

你错过了$ category的报价。

答案 1 :(得分:0)

正如axiac在评论中所写的那样,你在查询的最后给出了错误的单引号。

在这行代码中:

$sql="INSERT INTO `product_tbl` (`product_name`, `product_details`, `product_cat`, `product_sub_cat`, `product_img`, `meta_title`, `meta_description`, `schema`, `product_status`) VALUES ('$pname', '$content', '$category', '$subcat', '$pathname', '$meta_title', '$meta_description', '$schema,' '0');";

最后你有'$schema,' '0');";

如果仔细观察,可以看到您在逗号后面已关闭$schema的单引号。它应该是'$schema', '0');";

这将解决您当前的问题,但正如Panagiotis Kanavos在评论中提到的,您的代码容易受SQL Injection攻击。因此,对它进行一些研究以及如何解决它会更好(使用预处理语句和参数绑定)。