我是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);
}
?>
答案 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
攻击。因此,对它进行一些研究以及如何解决它会更好(使用预处理语句和参数绑定)。