我想在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);
答案 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方法:
答案 6 :(得分:-1)
如果您只想插入一列,请尝试此操作。这可以通过构建正确的VALUES
字符串来阻止循环。
$value_string = "'" . implode("','", $links) . "'"; // makes string like 'url1','url2','url3'
mysql_query("INSERT INTO pages (url) VALUES ($value_string)");