我有一个文本文件,我已将其放入数组中的值, 这是php代码:
<?php
$homepage = file_get_contents('hourlydump.txt');
$x = explode('|', $homepage);
$desc = array();
$cat = array();
$link = array();
$m = 1;
$n = 2;
$p = 3;
for ($i = 1; $i <= count($x) / 4; $i++) {
$m = $m + 4;
$desc[] = $x[$m];
$n = $n + 4;
$cat[] = $x[$n];
$p = $p + 4;
if ($x[$p])
$link[] = $x[$p];
}
echo "<pre>";
print_r($desc);
print_r($cat);
print_r($link);
?>
输出如下:
Array
(
[0] => Kamal Heer - Facebook Official Video 720p Dual Audio [Hindi + Punjabi]76 mb by rANA.mkv
[1] => 50 HD Game Wallpapers Pack- 1
)
Array
(
[0] => Movies
[1] => Other
)
Array
(
[0] => http://kickass.to/kamal-heer-facebook-official-video-720p-dual-audio-hindi-punjabi-76-mb-by-rana-mkv-t7613070.html
[1] => http://kickass.to/50-hd-game-wallpapers-pack-1-t7613071.html
)
//
//
//
任何人请帮助我我不知道如何插入这三个数组$ desc,$ cat和$ link的值 进入mysql表,列名为description,category,link
我知道简单的插入查询但不知道如何处理这些数组。
答案 0 :(得分:4)
我将举例说明如何建立基本数据库连接并完成插入,这仅用于说明目的。您应该在类中重新组织此代码,以便每个insert语句都不会创建PDO对象,而是重用之前创建的对象。
function insertItem($desc, $cat, $link) {
$dbh = new PDO("mysql:host=host;dbname=db", $user, $pass);
$sql = "INSERT INTO table (description, category, link) VALUES (:desc, :cat, :link)";
$sth = $dbh->prepare($sql);
$sth->bindValue(":desc", $desc);
$sth->bindValue(":cat", $cat);
$sth->bindValue(":link", $link);
$sth->execute();
}
答案 1 :(得分:1)
您可以使用for语句。
for($x =0, $num = count($desc); $x < $num; $x++){
// build you query
$sql = "INSERT into your_table (description, category, link) values ".
"(".$db->quote($desc[$x]).",".$db->quote($cat[$x]).",".
$db->quote($link[$x].")";
$db->query($sql);
}
当然,您必须使用适合您所选数据库API的卫生/报价方法。
答案 2 :(得分:0)
试试这个。我假设只有这么多值才能插入
for($i = 0;$i<2;$++) {
mysqli_query("INSER INTO tablename values(description,category,link) VALUES('$desc[$i]'
,'$cat[$i]','$link[$i]')");
}
答案 3 :(得分:0)
以下是一个简单的示例,用于从您检索文件的网站中读取文件,并将其插入数据库以清理数据:
<?php
// fill with your data
$db_host = 'localhost';
$db_user = '';
$db_pass = '';
$db_name = '';
$db_table = 'myTable';
$file = "hourlydump.txt.gz";
if($filehandle = gzopen($file, "r"))
{
$content = gzread($filehandle, filesize($file));
gzclose($file);
}
else
die('Could not read the file: ' . $file);
$con = mysqli_connect($db_host,$db_user,$db_pass,$db_name);
if($con->connect_error)
die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
$sql = "INSERT INTO $db_table (description, category, link) VALUES (?, ?, ?)";
if (!$insert = $con->prepare($sql))
die('Query failed: (' . $con->errno . ') ' . $con->error);
foreach (explode("\n", $content) as $line)
{
list($md5hash,$desc,$cat,$link,$torrent) = explode("|", $line);
if (!$insert->bind_param('sss',$desc,$cat,$link))
echo 'Binding parameters failed: (', $insert->errno, ') ', $insert->error;
if (!$insert->execute())
echo 'Insert Error ', $insert->error;
}
$insert->close();
$con->close();
注意:您可能想要检查文件是否已成功加载,如果爆炸中的字段存在或不存在以防止进一步的问题,但一般来说这应该可以正常工作。
此外,您可能希望更改$sql
以反映您的MySQL表格以及顶部的$db_table
。
更新:要插入所有值,请更改此项:
$sql = "INSERT INTO $db_table (description, category, link) VALUES (?, ?, ?)";
要:
$sql = "INSERT INTO $db_table (md5, description, category, link, torrent) VALUES (?, ?, ?, ? ,?)";
而且:
if (!$insert->bind_param('sss',$desc,$cat,$link))
要:
if (!$insert->bind_param('sssss',$md5hash,$desc,$cat,$link,$torrent))
上面注意s
每个项目需要s
你有5个项目所以5 s
是S表示字符串,D double,I integer,B blob {{ 3}}
另请注意我们将在$sql
上使用bind_param
的每个项目的?
。
答案 4 :(得分:0)
您可以在进行计算时构建查询:
$query = "INSERT INTO `table` (`description`, `category`, `link`) VALUES ";
for ($i = 1; $i <= count($x) / 4; $i++) {
$m = $m + 4;
$query .= "('".$x[$m];
$n = $n + 4;
$query .= "','".$x[$n];
$p = $p + 4;
if ($x[$p]) $query .= "','".$x[$p]."'),";
else $query .= "',NULL),";
}
$query = substr($query, 0, -1);//get rid of last comma
mysqli_query($query);
如果需要,您还可以与查询一起构建阵列:
$query = "INSERT INTO `table` (`description`, `category`, `link`) VALUES ";
for ($i = 1; $i <= count($x) / 4; $i++) {
$m = $m + 4;
$desc[] = $x[$m];
$query .= "('".$x[$m];
$n = $n + 4;
$cat[] = $x[$n];
$query .= "','".$x[$n];
$p = $p + 4;
if ($x[$p]){
$link[] = $x[$n];
$query .= "','".$x[$p]."'),";
} else {
$link[] = $x[$n];
else $query .= "',NULL),";
}
$query = substr($query, 0, -1);//get rid of last comma
mysqli_query($query);
答案 5 :(得分:-1)
将数组设为字符串
$description = json_encode($desc);
$category = json_encode($cat);
$link = json_encode($link);
然后将这些值插入数据库
在抓取时
使用json_decode
从字符串