我正在为学校项目基于Faroo.com(http://www.faroo.com/hp/api/api.html)的API制作搜索引擎。我想索引Faroo的索引,以便用户(在我的情况下,孩子)可以投票赞成或反对单个结果。

我的(PHP)脚本是什么样的:


  如果查询存在,请在MySQL数据库中查找。
  
  是=>从数据库中加载结果并将其显示给用户
  
  否=>从Faroo加载结果,向用户显示结果并将其存储在数据库中


我的数据库如下所示:

php - MySQL“INSERT INTO”错误:我必须使用哪个引号?-LMLPHP

我从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服务器版本以使用正确的语法
  靠近国家矿务局-维基百科,免费百科全书,
  第1行的www.wikipedia.org”


我已经搜索了,但是却找不到SQL错误。我认为这与字符串中的奇怪字符有关,或者我的报价是错误的?

亲切的问候,
马克斯

最佳答案

我认为您需要在varchar列中使用单引号',因此请按如下所示进行更改

$sql = "INSERT INTO queries (`id`, `query`, `title`, `url`, `domain`, `kwic`, `votes`) VALUES (NULL, '$q', '$titles[$x]', '$urls[$x]', '$domains[$x]', '$kwics[$x]', 0)";


我删除的查询末尾还有一个额外的双引号,因为idvotes列是integer字段,所以不需要单引号

关于php - MySQL“INSERT INTO”错误:我必须使用哪个引号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21953600/

10-13 02:57