4

ディレクトリにたくさんのcsvファイルがあります。これらのファイルを使用して、データベースの適切なフィールドとテーブルにコンテンツを配置するスクリプトを作成する必要があります。私はほとんどPHP言語の初心者です:インターネット上でいくつかのコードを見つけました。うまくいくようですが、ある段階で立ち往生しています。このウェブサイトにはいくつかのトピックが関連していますが、ecatの問題は見つかりませんでした。

これらのファイルのパスと名前を取得できるようにするphpスクリプトを作成しました。私も、名前が各csvに依存するテーブルを作成することができました(例:ファイル'data_1.csv'はmy-sqlのテーブルdata_1.csvを提供します)。すべてのテーブルには、id、url、valueの3つの同じフィールドがあります。最後に行うことは、各ファイルを読み取り、値を「|」で区切って配置することにより、これらのテーブルにデータを入力することです。右の表の文字。たとえば、「data_1.csv」の行が

8756 | htttp://example.com|何か書かれている

data_1.csvテーブルにレコードを取得したいと思います。ここで8756はidにあり、htttp://example.comはurlフィールドにあり、何かがvalueフィールドに書き込まれています。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(); 

?> 
4

3 に答える 3