0

MYSQL データベースに挿入しようとしている配列があります。それが私のMYSQLデータベースなのか、それとも私のphpコードなのかはわかりませんが、私のphpファイルを開くと、テーブルに何も挿入されません。これが私のコードです。

    <?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() の () に表示されるものと同じで、タイプとして「テキスト」に設定されています。どんな助けでも大歓迎ですありがとう。

4

4 に答える 4

1

あなたの変数を引用することを忘れないでくださいVALUES ('$var1', '$var2' ....)

ところで、コードを少しきれいにすることをお勧めします。作成$var{1-22}は維持するのに悪夢になるでしょう。22 個の変数を作成する代わりに、implode 関数を使用できます。

私は知らない、おそらくこのように?

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

また、Mysql が#その名前にある列を許可しているかどうかもわかりません。その列を見て、#STDNそれが許可されているかどうかを確認してください。

次の点を考慮してください。

  • PDOまたはmysqliへの切り替えを検討してください。PDOを使用していた場合、この問題は非常に簡単に解決できます。

  • mysql_* 関数に固執したい場合は、少なくともデータベースに挿入するすべてのデータをmysql_real_escape_stringでサニタイズしてください。

于 2012-05-08T02:35:54.857 に答える
0

'$var1' のようなコードで変数をラップし、最後に do die(mysql_error) のようにする必要があります。

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 が行うことは、ステートメントのエラーをチェックして報告することです。何かある場合は、ここに投稿して解決させてください。そして、あなたはデータベースに接続していますか??

于 2012-05-08T06:18:38.143 に答える
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())
于 2012-05-08T02:25:04.273 に答える
0

ブラウザでSQL構文をエコーし​​てデバッグしてみてください:

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)";

echo の結果をコピーして、mysql で実行します。何が起こるか見てください。

この助けを願っています

于 2012-05-08T02:19:26.733 に答える