sql >> データベース >  >> RDS >> Mysql

PHPを使用してデータベースに複数の配列を挿入する方法

    動作するようにコードを変更しました:

    form.php

    <form method="POST" action="form.php">
    <input type="text" name="waw" />
    <input type="submit" />
    </form>
    
    <form method="POST" action="input.php">
    <?php 
    $i=0;
    
    while ($i<$_GET['waw'])
    {
    ?>
    
    <!-- Person #1 -->
    
    <input type="text" name="username[]" />
    
    <input type="text" name="phonenum[]" />
    
    <input type="text" name="add[]" /><br />
    
    
    <?php 
    $i++;
    }
    ?>
    <input type="submit" />
    </form>
    

    input.php

    <?php
    
    
    $username="maizakath";
    $password="12345";
    $database="tryinsert";
    mysql_connect('localhost',$username,$password);
    @mysql_select_db($database) or die("<b>Unable to specified database</b>");
    
    
    
    $sql_start = 'INSERT INTO `mytable` VALUES '; 
    $sql_array = array(); 
    $queue_num = $_POST['waw']; 
    foreach ($_POST['username'] as $row=>$name)
    {
    $username = $name;
    $phonenum = $_POST['phonenum'][$row];
    $add = $_POST['add'][$row];
    $sql_array[] = '("' . $username . '", "'.$phonenum.'", "'.$add.'")'; 
    if (count($sql_array) >= $queue_num) {
      $query_single=$sql_start . implode(', ', $sql_array);
      mysql_query($query_single); 
      $sql_array = array(); 
    }
    }
    
    if (count($sql_array) > 0)  {
      $query = $sql_start . implode(', ', $sql_array);
      mysql_query($query)or die(mysql_error());
    }
    
    ?>
    

    それはうまくいきます。ローカルマシンでテストしました。

    編集(コメント)

    1. input.phpでの変数$queue_numの使用は無意味です。これは、この変数がform.phpスクリプトでのみ使用できるためです(「wow」入力は別のフォームに配置され、input.phpではなくファイルform.phpに送信されます)。したがって、if (count($sql_array) >= $queue_num) ブロックが正しく機能しません;

    2. データベース接続の構成設定を確認します(コメントで書いたように、定数を「localhost」という名前で定義するか、単語localhostを引用符で囲む必要があります)。

    3. 構造が間違っていたため、フォームを変更しました。

    4. form.phpで最初のフォームを作成する目的がわかりませんでした。

    このコードを変更して、ケースにより適したものにすることができます。しかし、すべての最初の人はこれを使おうとします。

    注。 var_dump() を使用します デバッグ中に$_POST配列を確認して、使用可能な変数を理解するための関数。



    1. mysqlストアドプロシージャ、存在するかどうかを確認するためのクエリ

    2. CakePHP:findメソッドでクエリを作成するときにHAVING操作を使用するにはどうすればよいですか?

    3. Symfony 2:Doctrineクエリビルダーを使用した関連のないテーブルの内部結合

    4. SQLServer-Windows認証で接続します