首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将此数组插入到MYSQL数据库中?为什么我的数组不能工作?

如何将此数组插入到MYSQL数据库中?为什么我的数组不能工作?
EN

Stack Overflow用户
提问于 2012-09-27 01:07:51
回答 2查看 138关注 0票数 0

我正在尝试使用一条内爆语句将这个数组插入到我的数据库中。但我正在努力寻找我错在哪里:我基本上是在寻找将以下两个函数转换为返回字符串的方法:

代码语言:javascript
复制
 function Titles($link) {
$str = file_get_contents($link);    
if( strlen( $str )>0 ) {    
    preg_match_all( "/\<title\>(.*)\<\/title\>/", $str, $titles );
    if (count($titles) > 1) {
        return $titles[1];   
    }
}

return '';
}

  function getMetas($link) {
$str1 = file_get_contents($link);    

if (strlen($str1)>0) {
    preg_match_all( '/<meta.*?name=("|\')description("|\').*?content=("|\')(.*?)("|\')/i', $str1, $description);
    if (count($description) > 1) {
        return $description[4];   
    }

}


 }


  $data = array();
  foreach ($links as $link) {
$output = array(
    "title"       => Titles($link), 
  "link"        => $link,
  "description" => getMetas($link),
  "keywords" => getKeywords($link) 
   );
   if (empty($output["description"])) 
   {$output["description"] = getWord($link);
  }
   $data[] = $output;
  }
  print_r($data);  

  mysql_query("INSERT INTO scan (title, url, description, keywords) VALUES ('".implode("'),('",$data)."')");

  if (!mysql_query()) {
echo "woops";
    }

   mysql_close($connect);
EN

回答 2

Stack Overflow用户

发布于 2012-09-27 01:12:37

问题是$data是一个多维数组,所以在内爆之后,查询中仍然是数组而不是字符串。

你也可以通过之前在$output上使用implode来解决这个问题:

代码语言:javascript
复制
$data[] = implode(',', $output);

除此之外,您应该在原始变量上使用mysql_real_escape_string,但由于mysql_*函数已被弃用,因此您确实应该切换到mysqli或PDO中的预准备语句。

编辑:实际上你需要修改这两个内爆:

代码语言:javascript
复制
 $data[] = '"' . implode('","', $output) . '"';
 ...
 mysql_query( "INSERT INTO scan (title, url, description, keywords)
    VALUES (" . implode('),(',$data) . ")" );
票数 1
EN

Stack Overflow用户

发布于 2012-09-27 01:43:44

尝尝这个

代码语言:javascript
复制
$fields =   array_keys($data);
    $values =   array_values($data);

    $formatedValues =   array();
    foreach($values as $val)
    {   $val    =   "'".addslashes($val)."'";
        $formatedValues[]   =   $val;
    }
      $table="scan";

$sql    =   "INSERT INTO ".$table." (";
    $sql    .=  implode(", ",$fields).") ";
    $sql    .=  "VALUES( ";
    $sql    .=  implode(", ",$formatedValues);
    $sql    .=  ")";
    mysql_query($sql) or die(mysql_error());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12606909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档