2012-05-08 34 views
0

我有一个数组,我试图插入到我的MYSQL数据库。我不确定它是否是我的MYSQL数据库或者它的我的php代码,但是当我打开我的php文件时,它不会在我的表中插入任何东西。这是我迄今为止的代码。如何将数组插入MYSQL数据库?

<?php 
    $con = mysql_connect("localhost","***","***"); 
    if (!$con) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 

    mysql_select_db("ms122r_reports", $con); 

    // Filter out zeros 
    $words = file('http://www.ndbc.noaa.gov/data/latest_obs/latest_obs.txt',    FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES); 

    $words = array_map('rtrim',$words); 
    $string = implode(" ",$words); 
    $array = explode(" ",$string); 

    $filtered = (array_filter($array)); 

    $row4 = array_slice($filtered, 704, 22); 

    $var1 = array_slice($row4, 0, 1); 
    $var2 = array_slice($row4, 1, 1); 
    $var3 = array_slice($row4, 2, 1); 
    $var4 = array_slice($row4, 3, 1); 
    $var5 = array_slice($row4, 4, 1); 
    $var6 = array_slice($row4, 5, 1); 
    $var7 = array_slice($row4, 6, 1); 
    $var8 = array_slice($row4, 7, 1); 
    $var9 = array_slice($row4, 8, 1); 
    $var10 = array_slice($row4, 9, 1); 
    $var11 = array_slice($row4, 10, 1); 
    $var12 = array_slice($row4, 11, 1); 
    $var13 = array_slice($row4, 12, 1); 
    $var14 = array_slice($row4, 13, 1); 
    $var15 = array_slice($row4, 14, 1); 
    $var16 = array_slice($row4, 15, 1); 
    $var17 = array_slice($row4, 16, 1); 
    $var18 = array_slice($row4, 17, 1); 
    $var19 = array_slice($row4, 18, 1); 
    $var20 = array_slice($row4, 19, 1); 
    $var21 = array_slice($row4, 20, 1); 
    $var22 = array_slice($row4, 21, 1); 

    // Insert into database 
    mysql_query("INSERT INTO table1(#STN, LAT, LON, YYYY, MM, DD, hh, mm2, WDIR, WSPD,  GST, WVHT, DPD, APD, MWD, PRES, PTDY, ATMP, WTMP, DEWP, VIS, TIDE) 
    VALUES ($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10, $var11, $var12, $var13, $var14, $var15, $var16, $var17, $var18, $var19, $var20, $var21, 
    $var22)"); 

    mysql_close($con); 
    ?> 

对不起,我是PHP和MYSQL的新手。我的MYSQL数据库中的列名与table1()的()中出现的相同,并且它们被设置为“text”作为类型。任何帮助非常感谢,谢谢。

+0

fgetcsv()用空格分隔符会使这个容易得多。 – 2012-05-08 02:19:21

+5

如果你发现自己使用$ var1-22,你做错了。 – jordanm

回答

0

尝试与浏览器相呼应你的SQL syntaxt进行调试:

echo "INSERT INTO table1(#STN, LAT, LON, YYYY, MM, DD, hh, mm2, WDIR, WSPD,  GST, WVHT, DPD, APD, MWD, PRES, PTDY, ATMP, WTMP, DEWP, VIS, TIDE) 
VALUES ($var1, $var2, $var3, $var4, $var5, $var6, $var7, $var8, $var9, $var10, $var11, $var12, $var13, $var14, $var15, $var16, $var17, $var18, $var19, $var20, $var21, 
$var22)"; 

复制回波结果并执行它在MySQL。看看会发生什么。

希望这有助于

0

我要回答的称号,这也可以帮助您解决您的问题。您可以将您的数组切片到另一个数组中以仅获取要插入的值。

$dbh = new PDO('mysql:host=localhost;dbname=dbname', $user, $pass); 
$sth = $dbh->prepare('INSERT INTO table1(STN, LAT, LON, YYYY, MM, DD, hh, mm2, WDIR, WSPD,  GST, WVHT, DPD, APD, MWD, PRES, PTDY, ATMP, WTMP, DEWP, VIS, TIDE) 
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)') 
$sth->execute(array()) 
1

不要忘记注明您的增值经销商 作为VALUES ('$var1', '$var2' ....)

顺便说一句,我建议你清理你的代码一点点。 创建$var{1-22}将是一场梦魇。 您可以使用破灭功能,而不是创建22个变量

我不知道,也许是这样?

echo 'VALUES (\'' . implode('\',\'', $row) . '\')'; 

此外,即时通讯不知道如果Mysql允许名称为#的列。看看你的#STDN列,并检查是否允许。

考虑到以下几点:

  • 请考虑改用PDOmysqli。如果您正在使用PDO这个问题将有一个非常简单的解决方案。

  • 如果你想坚持mysql_ *函数,至少要用mysql_real_escape_string来清理你要插入数据库的所有数据。

0

你需要用像“$ var1的”代码和结束的做死(mysql_error)您varables,如:

mysql_query("INSERT INTO table1(#STN, LAT, LON, YYYY, MM, DD, hh, mm2, WDIR, WSPD,  GST, WVHT, DPD, APD, MWD, PRES, PTDY, ATMP, WTMP, DEWP, VIS, TIDE) 
    VALUES ('$var1', '$var2', '$var3', '$var4', '$var5', '$var6', '$var7', '$var8', '$var9', '$var10', '$var11', '$var12', '$var13', '$var14', '$var15', '$var16', '$var17', '$var18', '$var19', '$var20', '$var21', 
    '$var22')") or die(mysql_error()); 

做什么mysql_error是检查,并在你的发言报告错误。如果有任何问题,请在这里发布让我们解决它。你确定你连接到数据库?