我正在为一个学校项目制作一个基于Faroo.com API(http://www.faroo.com/hp/api/api.html)的搜索引擎。我想索引Faroo的索引,以便用户(在我的情况下,孩子们)可以投票或者拒绝单个结果。
我的(PHP)-script是什么样的:
如果查询存在,请查看MySQL数据库。
是 =>从数据库加载结果并将其显示给用户
没有 =>从Faroo加载结果,将这些结果显示给用户并将它们存储在数据库中
我的数据库如下所示:
我从Faroo API获取存储在列中的所有数据,除了“id”列。
最后一部分(将Faroo数据存储在数据库中)是出错的地方:
for($x=0; $x<$tel; $x++){
$sql = "INSERT INTO queries (`id`, `query`, `title`, `url`, `domain`, `kwic`, `votes`) VALUES (NULL, $q, $titles[$x], $urls[$x], $domains[$x], $kwics[$x], 0);";
echo '<br />'.$x.'e query: @'.$sql.'@';
if(!$resultaat = $db->query($sql)){
die('De query kon niet worden uitgevoerd: [' . $db->error . ']');
}
$resultaat = mysqli_fetch_array($resultaat);
}
$tel
是一个变量,用于计算从Faroo获得的结果数。它在这段代码之前定义。
当我运行此代码时,我得到了一个很好的MySQL错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近'国家矿业局 - 维基百科,免费的百科全书, www.wikipedia.org'第1行
我搜索过并搜索过,但我找不到SQL错误。我认为它与字符串中的奇怪字符有关,或者我的引文可能是假的?
亲切的问候, 最大
答案 0 :(得分:3)
我认为您需要对varchar列使用单引号'
,因此请按以下步骤进行更改
$sql = "INSERT INTO queries (`id`, `query`, `title`, `url`, `domain`, `kwic`, `votes`) VALUES (NULL, '$q', '$titles[$x]', '$urls[$x]', '$domains[$x]', '$kwics[$x]', 0)";
在我删除的查询末尾您还有一个额外的双引号,因为它们是id
,您不会需要列votes
和integer
的单引号字段