1

whileループを使用して、textbox-fields テキストを MySQL テーブルの行に挿入しようとしています。

コードの一部を次に示します: ($datetoday = 270313)

                        <?php 


        $i=0;
        while ($i < $row_Num) {
            ${'date_'.$i} = $_REQUEST["{'date_'.$i}"];
            ${'text_'.$i} = $_REQUEST["{'text_'.$i}"];
            ${'con_name_'.$i} = $_REQUEST["{'con_name_'.$i}"];
            ${'con_phone_'.$i} = $_REQUEST["{'con_phone_'.$i}"];

           $values= array(${'date_'.$i},${'text_'.$i},${'con_name_'.$i},${'con_phone_'.$i});
           print_r($values);
           $sql = "INSERT INTO data.$datetoday(`KEY,`DATE`,`COLOR`,`TEXT`,`CON_NAME`,`PHONE`) VALUES (`$i`,`$values[0]`,`FFFFFF`,`$values[1]`,`$values[2]`,`$values[3]`)";
           $result = mysql_query($sql,$link);
           if (!$result) {
            die ("Can't create table named $datetoday : " . mysql_error());
            }
           $i++;
           }


        ?>

ページの URL は次のとおりです。

> http://localhost:5110/test.php?date_0=000000&text_0=QWERTY&con_name_0=iuytre&con_phone_0=0000000000&date_1=111111&text_1=ASDFGHJK&con_name_1=lkjhgfd&con_phone_1=1212121212

ただし、テーブルを更新したり、配列を出力したりしません (テスト用)。助言がありますか?

4

3 に答える 3

2

あなたのURL部分文字列を使用して、いくつかの小さな問題がありました。私はそれを機能させました。以下を参照してください。

$row_Num = 1;
$i = 0;
while ($i <= $row_Num) {
    // In the $_REQUEST you were indexing the curly braces, remove them.
    ${"date_" . $i} = $_REQUEST["date_$i"];
    ${"text_" . $i} = $_REQUEST["text_$i"];
    ${"con_name_" . $i} = $_REQUEST["con_name_$i"];
    ${"con_phone_" . $i} = $_REQUEST["con_phone_$i"];

    $values = array(
        ${"date_" . $i},
        ${"text_" . $i},
        ${"con_name_" . $i},
        ${"con_phone_" . $i}
    );
    // Not printr() And this is how I print arrays, it is cleaner.
    echo '<pre>', print_r($values, true), '</pre>';
    $i++;
}

出力:

Array
(
    [0] => 000000
    [1] => QWERTY
    [2] => iuytre
    [3] => 0000000000
)
Array
(
    [0] => 111111
    [1] => ASDFGHJK
    [2] => lkjhgfd
    [3] => 1212121212
)

編集

どのように設定しているかはまだわかりません$row_Num

$_SESSION['row_Num'] = $_REQUEST["row_Num"];

$_REQUEST表示している文字列に「row_Num」が含まれていないため、これは何もわかりません。あなたのクエリは必要なので、何回表示されるかをカウントDATEするループを作成しました。次のコードを試して、私に知らせてください。foreachDATE

$i = 0;
$count = 0;
// I added this line to take care of how many times the loop runs
foreach ($_REQUEST as $key => $value) { (strstr($key, 'date')) ? $count++ : NULL; }
// Changed '<=' to '<' because it would loop 3 times since we start $i at 0.
// $i needs to remain at 0 since your URL substring indexing starts at 0.
while ($i < $count) {
    ${'date_' . $i} = $_REQUEST["date_$i"];
    ${'text_' . $i} = $_REQUEST["text_$i"];
    ${'con_name_' . $i} = $_REQUEST["con_name_$i"];
    ${'con_phone_' . $i} = $_REQUEST["con_phone_$i"];

    $values = array(
        ${"date_" . $i},
        ${"text_" . $i},
        ${"con_name_" . $i},
        ${"con_phone_" . $i}
    );

    ### Echo for troubleshooting ###
    echo '<pre>', print_r($values, true), '</pre>';
    $sql = "INSERT INTO `data`.`".$datetoday."` (`KEY`,`DATE`,`COLOR`,`TEXT`,`CON_NAME`,`PHONE`) VALUES 
        (
            '".$i."',
            '".$values[0]."',
            'FFFFFF',
            '".$values[1]."',
            '".$values[2]."',
            '".$values[3]."'
        )";

    ### Echo for troubleshooting ###
    echo '<pre>', $sql, '</pre>';
    $result = mysql_query($sql, $link) or die ('Could not insert values: '.mysql_error());
    $i++;
}

出力:

Array
(
    [0] => 000000
    [1] => QWERTY
    [2] => iuytre
    [3] => 0000000000
)
INSERT INTO `data`.`280313` (`KEY`,`DATE`,`COLOR`,`TEXT`,`CON_NAME`,`PHONE`) VALUES 
        (
            '0',
            '000000',
            'FFFFFF',
            'QWERTY',
            'iuytre',
            '0000000000'
        )
Array
(
    [0] => 111111
    [1] => ASDFGHJK
    [2] => lkjhgfd
    [3] => 1212121212
)
INSERT INTO `data`.`280313` (`KEY`,`DATE`,`COLOR`,`TEXT`,`CON_NAME`,`PHONE`) VALUES 
        (
            '1',
            '111111',
            'FFFFFF',
            'ASDFGHJK',
            'lkjhgfd',
            '1212121212'
        )
于 2013-03-27T15:37:58.597 に答える
1

'date_' . $iの代わりに使用'date_'.'$i'

'date_'.'$i'は常にdate_$iであり、一重引用符が使用されているため、変数の展開$iは行われません。文字列内の変数を展開する場合は、二重引用符を使用します (または、$variables が文字列の先頭または末尾にある場合は引用符を使用しません)。

于 2013-03-27T15:17:03.683 に答える
0

SQL リクエストを n 回呼び出すと遅いことに注意してください。1 つの SQL リクエストを送信する方がよいでしょう。このようなもの:

<?php 
 $i=0;$comma="";$all_values="";
 while($i<$row_Num)
 {${'date_'.$i}=$_REQUEST["date_".$i];
  ${'text_'.$i}=$_REQUEST["text_".$i];
  ${'con_name_'.$i}=$_REQUEST["con_name_"$i];
  ${'con_phone_'.$i}=$_REQUEST["con_phone_".$i];

  $values=array(${'date_'.$i},${'text_'.$i},${'con_name_'.$i},${'con_phone_'.$i});
  print_r($values);
  $all_values.=$comma."('".$i."','".$values[0]."','FFFFFF','".$values[1]."','".$values[2]."','".$values[3]."')";
  $comma=",";
  $i++;
 }
 $sql="INSERT INTO data.$datetoday (`KEY,`DATE`,`COLOR`,`TEXT`,`CON_NAME`,`PHONE`) VALUES ".$all_values;
 $result=mysql_query($sql,$link);
 if(!$result)
     die("Can't create table named $datetoday : ".mysql_error());
?>
于 2013-03-27T16:26:39.997 に答える