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()データに表示されない区切り文字を使用したい場合があります (通常は印刷できない文字が適していますが、さまざまな記号が機能する場合もあります)。または、PHP に任せるか、 d 形式serialize()で保存することもできます。json_encode

実際に複数の行を$linksそれぞれ 1 つのエントリで挿入しようとしている場合は、次のようにする必要があります。

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

配列を繰り返し処理し、各要素に対して順番に INSERT クエリを作成する必要があります。

于 2012-09-13T21:20:13.017 に答える
-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

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 に答える