2011-12-22 13 views
0

以前はうまくいきましたが、誰かがコードを変更したことがありました。多分デバッグした後に問題を検出できないので、誰かが助けてくれることを願っています。このPHP-MySQLコードが正しく動作しないのはなぜですか?

私は、ユーザーがオプションのセットを選択し、フォーム提出時に、これらのオプションを配列内にPOSTSで完全にうまく動作させるHTMLフォームを用意しています。それから私はMySQLテーブルに配列の要素を書いています。これが問題の発生場所です。私のコードは以前はうまくいきましたが、今はすべて変です。何らかの理由で出力が混ざり合ってしまいます。

以下は、渡された配列値とその後の配列の出力です。ここで

enter image description here

MySQLへの配列の値を書き込み、私のコードです:ここでは

error_reporting(-1); 
$arr=$_POST["itemsToAdd"]; 

$cal=$_POST["calendar"]; 

print_r($arr); 

// Make a MySQL Connection 


//empty table first to remove any previous old on-calls stored. 
$query = "truncate table ProdOnCallSetup"; 
if(mysql_query($query)){ 
} 
else{ 
} 




foreach ($arr as &$value) { 

// Insert a row of information into the table "ProdOnCallSetup" 
mysql_query("INSERT INTO ProdOnCallSetup 
(Email) VALUES('$value') ") 
or die(mysql_error()); 

} 

は、コードの出力を与えることやMySQLの行を表示している:

<ol class=”list_style”> 

    <?php 
//make MySQL connection 

    $query = "SELECT * FROM ProdOnCallSetup"; 

    $result = mysql_query($query) or die(mysql_error()); 


    while($row = mysql_fetch_array($result)){ 
     echo "<li>".$row['Email']."</li>"; 
     echo "<br />"; 
    } 


    ?> 

</ol> 

参照してください。ここの問題?私はそれらを表示するときにMySQLで正しい順序でそれらを書きますが、注文は混ざります。ご注文はジャスティン、Achau、Chellatamby私はエコーあなたは、特にあなたのSELECT文でORDER BY句を使用しない限り、行が返される順序は、不定あるうちDBからそのAchau、Chellatamby、ジャスティン

答えて

1

ですそして、変更される可能性があり、それはあなたが内のレコードを追加したどのような順序は重要ではありません....、これは関係ありません... ...

SELECT * FROM ProdOnCallSetup ORDER BY Email 

(または任意の列IDあなたがそれらを注文したい、ORDER BYを使用します)

データベースに追加した順に並べ替えたい場合は、自動インクリメントが必要ですテーブル上の欄とその列の並び

+0

私は電子メールで注文しましたが、それでも何もしませんでしたが、私はテーブルの電子メール列を自動インクリメントしています。 EDIT:アルファベット順の電子メール名に基づいて注文することを意味しますが、オートインクリメントもありますが、DBに追加した順序で列を返すのはどうですか? – Bulvak

+0

SELECTステートメントでORDER BY pidを使用します(pidはオートインクリメントの列に付けた名前です)....電子メールの列ではありません。これは絶対的な基本であるため、MySQLの使い方についてのチュートリアルをいくつか紹介します。 –

+0

MySQLテーブルのIDを取得してIDセットを取得するにはどうしたらいいですか?私はしばらく前からauto_incrementがすべての変数タイプをサポートしていません。 – Bulvak

関連する問題