Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL错误“在“更新”附近使用正确语法”_Mysql_Pdo - Fatal编程技术网

MySQL错误“在“更新”附近使用正确语法”

MySQL错误“在“更新”附近使用正确语法”,mysql,pdo,Mysql,Pdo,我得到这个错误未处理的异常 SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“update、desc、indir、time VALUES?”附近使用的正确语法 每当我提交表格时。这是源代码 if(!is_admin()) { header("Location: $config->url"); exit; } $cid = intval($_GET['id']); if($_GET['act'] ==

我得到这个错误未处理的异常

SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行的“update、desc、indir、time VALUES?”附近使用的正确语法

每当我提交表格时。这是源代码

if(!is_admin())
{
header("Location: $config->url");
exit;
}
$cid = intval($_GET['id']);
if($_GET['act'] == 'add')
{
$db->bind(id,$cid);
$file = $db->row("SELECT * FROM `".PREFIX."category` WHERE `id`=:id");
if(!$file)
{
$file = new stdClass();
$file->path = "/files";
}
if(!is_dir("..".$file->path))
{
header("Location: $config->url");
exit;
}
if($_POST['save'])
{
$name=$_POST['name'];
$icon=$_POST['icon'];
if($db->count("SELECT COUNT(id) FROM `".PREFIX."category` WHERE `path` = '".$file->path."/".$name."'") == 0)
{
$path=''.$file->path.'/'.$name.'';
$desc=$_POST['desc'];
if(isset($_POST['new']))
$new=1;
else
$new=0;
if(isset($_POST['update']))
$update=1;
else
$update=0;
$time=time();
$insert=$db->query("INSERT INTO ".PREFIX."category(name, path, icon, new, update, desc, indir, time) VALUES(:name, :path, :icon, :new, :update, :desc, :id, $time)", array("name"=>"$name","icon"=>"$icon","new"=>"$new","update"=>"$update","path"=>"$path","id"=>"$cid","desc"=>"$desc"));
if($insert>0)
{
mkdir("..".$file->path."/".$name,0777);
header("Location: $config->url/cat/".$cid."/'".htmli(converturl($file->name)).".html");
}
}
echo 'already exixs';
}
else
echo '<form method="post" action="#">Name : <input type="text" name="name" /><br/>Description : <input type="text" name="desc" /><br/>Icon : <input type="text" name="icon" /><br/><input type="radio" name="new" value="1" /> New<br/><input type="radio" name="update" value="1" /> Update<br/><br/><input type="submit" name="save" value="Add" /></form>';
}
这是您的insert语句:

INSERT INTO ".PREFIX."category(name, path, icon, new, update, desc, indir, time)
    VALUES(:name, :path, :icon, :new, :update, :desc, :id, $time)
MySQL中有几个列名是保留字。你需要逃离他们:

INSERT INTO ".PREFIX."category(name, path, icon, `new`, `update`, `desc`, indir, `time`)
    VALUES(:name, :path, :icon, :new, :update, :desc, :id, $time);
保留字列表为

一般来说,您应该避免使用这些单词作为标识符。它们已经在MySQL中用于其他目的。但是,如果你必须使用它们,那么每次你都需要逃离它们。注意:我也逃过了时间。你会注意到在保留字列表的末尾有一些是允许的,因为它们已经被广泛使用了。但是时间是类型和函数的名称,所以它也应该被保留。

在这里检查您的查询

$insert=$db->query("INSERT INTO 
".PREFIX."category(name, path, icon, new, update, desc
这里update/desc/new都是关键字/reserveword;所以你必须像这样引用它

$insert=$db->query("INSERT INTO 
".PREFIX."category(name, path, icon, `new`, `update`, `desc`
UPDATE和DESC都是。要将它们用作列或表标识符,需要用反勾号引用它们。另请参见引用示例。