MySQL“INSERT INTO”-error:我必须使用哪种报价?

时间:2014-02-22 11:24:00

标签: php mysql sql database

我正在为一个学校项目制作一个基于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错误。我认为它与字符串中的奇怪字符有关,或者我的引文可能是假的?

亲切的问候, 最大

1 个答案:

答案 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,您不会需要列votesinteger的单引号字段