使用PHP从文本文件中读取,添加到MySQL DB问题

时间:2011-08-12 17:15:42

标签: php mysql phpmyadmin xampp

我有以下PHP代码,允许我逐行从文本文件读入并写入MySQL数据库。文本文件由13行值组成,每行由一个空格分隔。我已经在SQL中单独创建了表(需要所有相关的字段:Time,WIMU_ID,Ax,Ay等),然后运行下面的PHP将值插入到表中。我的问题是:有没有办法在下面的PHP代码中创建表,而不必首先在SQL中创建表?任何帮助或建议表示赞赏。 休

<?php

    $connection  = mysql_connect('localhost','root','bonzo123');
    mysql_query('create database gameDB');
    mysql_select_db('gameDB');

    $wx = array_map('trim',file("Thu-Apr-01-09_41_01-2010.txt_calibrated_120Hz.txt"));
    $newwx = array();
    foreach($wx as $i => $line)
    {
            if ($i > 1)
            {
                    $tmp = array_filter(explode(' ',$line));
                    $q = "insert into test1 (Time, WIMU_ID, Ax, Ay, Az, Gx, Gy, Gz, Mx, My, Mz, Ax70, Ay37) values ('" . implode("','",$tmp) . "')";
                    $rw = mysql_query($q) or die("Problem with the query: $q<br>" . mysql_error());
            }
    }

&GT;

2 个答案:

答案 0 :(得分:1)

我认为你真正想要的是:

http://dev.mysql.com/doc/refman/5.1/en/load-data.html

你可以通过PHP调用,但除非你有特殊原因不能使用它,否则这样会好很多。

答案 1 :(得分:0)

当然,你可以执行如下命令:

CREATE TABLE IF NOT EXISTS `test1`  (
...
);

要获取表创建查询,请在已在SQL中创建此命令后发出此命令:

SHOW CREATE TABLE `test1`;

修改

请注意,您不必直接在SQL中创建表,但由于您已经拥有,因此发出上述命令将准确地为您提供在PHP中包含的内容,以便在将来的安装中创建表。表不存在。

另请注意,正如@Jeremy建议的那样,您不必“自己动手”代码将数据文件导入表格。创建表格后,您可以使用LOAD DATA INFILE...填充表格。

编辑2:

以下是基于您的评论的示例:

<?php
// Connect to the database server
$connection = mysql_connect('localhost', 'root', 'bonzo123');
if (!$connection)
    die('Could not connect: ' . mysql_error());

// Create database gameDB
if (mysql_query('create database gameDB', $connection)) {
    echo "Database gameDB created successfully.\n";
} else {
    echo 'Error creating database: ' . mysql_error() . "\n:";
}

// select which database to use
mysql_select_db('gameDB', $connection);

// create table test1 if it doesn't already exist
mysql_query('CREATE TABLE IF NOT EXISTS test1 (
    v1 varchar(100),
    v2 varchar(100),
    v3 varchar(100),
    v4 varchar(100),
    v5 varchar(100),
    v6 varchar(100),
    v7 varchar(100),
    v8 varchar(100),
    v9 varchar(100),
    v10 varchar(100)', $connection);

?>