将'Array'插入mysql表

时间:2012-09-13 21:16:23

标签: php

我想在mysql表中插入一个数组。该数组是通过脚本扫描所有链接,转换为绝对链接然后在数组中显示它们而生成的。我决定将mysql_query数组放入表中,但现在我卡住了。它只发布'Array',而不是将数组中的每一行都发布到另一行。任何想法??!

   <?php
 require_once('simplehtmldom_1_5/simple_html_dom.php');
 require_once('url_to_absolute/url_to_absolute.php');
   $connect = mysql_connect("xxxx", "xxxx", "xxx") or die('Couldn\'t connect to MySQL Server: ' . mysql_error());
    mysql_select_db("xxxx", $connect ) or die('Couldn\'t Select the database: ' . mysql_error( $connect ));

  $links = Array();
  $URL = 'http://www.theqlick.com'; // change it for urls to grab  
  // grabs the urls from URL 
 $file  = file_get_html($URL);
 foreach ($file->find('a') as $theelement) {
  $links[] = url_to_absolute($URL, $theelement->href);
  } 
  print_r($links);
  mysql_query("INSERT INTO pages (url) VALUES ('$links[]')");
  mysql_close($connect);

7 个答案:

答案 0 :(得分:3)

您可能希望implode()使用未出现在数据中的分隔符(不可打印的字符通常是一个不错的选择,但有时候各种符号都有效)。或者,您可以为您提供PHP serialize(),或者甚至以json_encode格式保存。

如果您实际上尝试插入多行,每行有一个$links条目,您应该这样做:

mysql_query("INSERT INTO pages (url) VALUES ('".implode("'),('",$links)."')");

确保首先正确清理所有链接!

答案 1 :(得分:2)

您可以用JSON格式表示数组并将其插入数据库中。但实际上,良好的数据库设计应该不需要插入数组。更好的是为数组中的每个键设置一个单独的列,只存储值而不是实际的数组结构。

答案 2 :(得分:1)

将数组转换为字符串? 这是我认为最好的选择..

$ids = join(',',$links);  
$sql = "INSERT INTO pages (url) VALUES ('$ids')";

答案 3 :(得分:1)

您应该查看serialize()

$serialized = serialize( $yourArray );
// insert _$serialized_ into the DB
// and when retrieving it - unserialize()
$unserialized = unserialize( $retrievedValue );

答案 4 :(得分:-1)

您需要迭代数组并依次为每个元素进行INSERT查询。

答案 5 :(得分:-1)

如果要将每行存储到db中的一个链接,则应该放入mysql_query(“INSERT INTO pages(url)VALUES('$ link')”);在foreach周期内。

否则使用implode方法:

http://it2.php.net/manual/en/function.implode.php

答案 6 :(得分:-1)

如果您只想插入一列,请尝试此操作。这可以通过构建正确的VALUES字符串来阻止循环。

$value_string = "'" . implode("','", $links) . "'"; // makes string like 'url1','url2','url3'
mysql_query("INSERT INTO pages (url) VALUES ($value_string)");