0

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

   <?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);
4

7 回答 7

3

您可能希望implode()使用未出现在数据中的分隔符(不可打印的字符通常是一个不错的选择,但有时各种符号都可以使用)。或者,您可以让 PHPserialize()为您服务,甚至将其保存为json_encoded 格式。

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

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

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

于 2012-09-13T21:20:42.840 回答
2

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

于 2012-09-13T21:19:33.790 回答
1

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

$ids = join(',',$links);  
$sql = "INSERT INTO pages (url) VALUES ('$ids')";
于 2012-09-13T21:17:55.677 回答
1

你应该看看serialize()

$serialized = serialize( $yourArray );
// insert _$serialized_ into the DB
// and when retrieving it - unserialize()
$unserialized = unserialize( $retrievedValue );
于 2012-09-13T21:19:17.860 回答
-1

如果你想在数据库中存储每行的链接,你应该把 mysql_query("INSERT INTO pages (url) VALUES ('$link')"); 在foreach循环内。

否则使用 implode 方法:

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

于 2012-09-13T21:20:52.087 回答
-1

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

$value_string = "'" . implode("','", $links) . "'"; // makes string like 'url1','url2','url3'
mysql_query("INSERT INTO pages (url) VALUES ($value_string)");
于 2012-09-13T21:35:07.773 回答
-1

您需要遍历数组并依次对每个元素进行 INSERT 查询。

于 2012-09-13T21:20:13.017 回答