我有很多csv文件在一个目录中。对于这些文件,我需要编写一个脚本将它们的内容放入我的数据库的正确字段和表格中。我几乎是php语言的初学者:我在互联网上找到了一些代码片段。它似乎可以工作,但我卡在了一个阶段。有些主题与此网站有关,但我没有找到ecat问题的解决方法。
我编写了一个PHP脚本,可以获取这些文件的路径和名称。我还成功创建了一个表,其名称取决于每个CSV(例如:文件“data_1.csv”在mysql中给出数据_1.csv表)。所有表都具有相同的三个字段:id,url,value。 最后要做的是通过读取每个文件并将用“|”字符分隔的值放入正确的表格中来填充这些表。例如,如果“data_1.csv”的一行是
8756 | htttp://example.com | something written
我希望在data_1.csv表中得到一个记录,其中8756在ID中,htttp://example.com在URL字段中,something written在值字段中。 我找到了使用fcsvget函数读取和打印这些csv的方法。但我不知道如何将这些行放入SQL数据库中。有人能在这一点上帮助我吗?
以下是我的脚本
我编写了一个PHP脚本,可以获取这些文件的路径和名称。我还成功创建了一个表,其名称取决于每个CSV(例如:文件“data_1.csv”在mysql中给出数据_1.csv表)。所有表都具有相同的三个字段:id,url,value。 最后要做的是通过读取每个文件并将用“|”字符分隔的值放入正确的表格中来填充这些表。例如,如果“data_1.csv”的一行是
8756 | htttp://example.com | something written
我希望在data_1.csv表中得到一个记录,其中8756在ID中,htttp://example.com在URL字段中,something written在值字段中。 我找到了使用fcsvget函数读取和打印这些csv的方法。但我不知道如何将这些行放入SQL数据库中。有人能在这一点上帮助我吗?
以下是我的脚本
<?php
ini_set('max_execution_time', 300);
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass, true) or die ('Error connecting to mysql');
$dbname = 'test_database';
mysql_select_db($dbname);
$bdd = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$mysqli = new mysqli($dbhost, $dbuser, $dbpass, $dbname);
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
else {
echo "hello <br>";
}
$dir = 'C:\wamp\www\test';
$imgs = array();
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if (!is_dir($file) && preg_match("/\.(csv)$/", $file)) {
array_push($imgs, $file);
}
}
closedir($dh);
} else {
die('cannot open ' . $dir);
}
foreach ($imgs as $idx=>$img) {
$class = ($idx == count($imgs) - 1 ? ' class="last"' : '');
$filePath=$dir . '\\'. $img;
$file = fopen($filePath, "r") or exit("Unable to open file!");
$nom = 'FILE: ' . $dir . '\\'. $img;
echo $nom;
settype($nom, "string");
echo '<br>';
$chemin = '<img src="' . $dir . $img . '" alt="' .
$img . '"' . $class . ' />' . "\n";
echo $chemin;
$file_name = basename($filePath);
$sql = 'CREATE TABLE `' . $file_name . '` (id int(20000), url varchar(15), value TEXT)';
mysql_query($sql,$conn);
$handle = fopen($filePath, 'r');
while (($row = fgetcsv($handle)) !== false) {
foreach ($row as $field) {
echo $field . '<br />';
}
}
fclose($handle);
}
echo ("VERIFY");
for ($i = 1; $i <= 1682; $i++) {
echo ("<br>A : " . $i);
$checkRequest= "select * from movies where movieID='". $i."'";
echo ("<br>". $checkRequest);
if ($result = $mysqli->query($checkRequest)) {
printf("<br> Select ". $i ."returned %d rows.\n", $result->num_rows);
if ($result->num_rows == 0) {
echo ("I : " . $i);
}
$result->close();
}
}
$mysqli->close();
?>
mysql_*
函数。它们已经不再维护,社区已经开始了废弃过程。看到红框了吗?相反,您应该学习有关prepared statements,并使用 PDO 或 MySQLi 中的任一种。如果您无法决定,这篇文章将有助于选择。如果您有兴趣学习,这里是一个很好的PDO教程。 - Madara's Ghost