Geo*_*oGo 3 mysql sql mysql-error-1064
INSERT INTO `jos1_content`
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES
($title, $introtext, $fulltext, 1, 1, $catid, 5)
Run Code Online (Sandbox Code Playgroud)
查询由php脚本组成.变量的推导表明它们不是空的.应phpMyAdmin的请求显示错误:
1064 - 您的SQL语法出错; 检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法
您需要使用单引号来指示SQL的字符串 - 使用:
INSERT INTO `jos1_content`
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES
('". $title ."', '". $introtext ."', '". $fulltext ."', 1, 1, $catid, 5)
Run Code Online (Sandbox Code Playgroud)
更安全的方法是使用:
$query = sprintf("INSERT INTO `jos1_content`
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES
('%s', '%s', '%s', 1, 1, %d, 5)",
mysql_real_escape_string($title),
mysql_real_escape_string($introtext),
mysql_real_escape_string($fulltext),
$catid);
Run Code Online (Sandbox Code Playgroud)
参考:
您需要用引号括起您插入到字符串类型字段中的PHP变量:
INSERT INTO `jos1_content`
(`title`, `introtext`, `fulltext`, `state`, `sectionid`, `catid`, `attribs`)
VALUES
('$title', '$introtext', '$fulltext', 1, 1, $catid, 5)
Run Code Online (Sandbox Code Playgroud)