0

テーブルと動的テキストフィールドから行を取得し、それを別のテーブルに挿入する方法について、サポートが必要です。私がやろうとしているのは、下の表から特定のstate_idを取得<input type='text' name='constituency[]' />し、同じページに表示されているテキストボックスのデータと組み合わせて、表に挿入することです。

                    +---------+--------------------------+
                    |state_id |  state   |   senatorial  |  
                    |--- -----|----------|---------------|
                    |    1    |  utah    |    A-North    | 
                    |    2    |  utah    |    B-South    |  
                    +---------+----------+---------------+

情報を取得するために使用しているHTML。constituencyは動的なテキストフィールドであり、複数回発生するため、配列に含める必要があります

                    <input type='hidden' name="state_id[]"   value="<?php echo $row['state_id'];?>" />
                    <input type='text'   name='constituency[]' />

テーブルに挿入するために使用しているクエリ

                    <?php
$constituencys = $_POST['constituency']      ; 
        $state_id = $_POST['state_id']; 


         if(isses($_POST['constituency']))
   {
$constituencys = $_POST['constituency']      ;   
                      foreach($constituencys as          $constituency) {  
     $state_id[$i]= $state_id[$i];
                      $query = mysql_query(" 
         INSERT INTO `constituency` (
                    `constituency_id`,
                    `state_id`,
                    `constituency_name`
                    ) VALUES (
                    NULL,
                    '".$state_id[$i]."',
                    '".$constituency."'
                    "); 
                       }



                    if(mysql_affected_rows()>0){
                    echo "Inserted Successfully";
                    }else{
                    echo "No Row Inserted";
                    echo mysql_error() ;
                    echo"<br>Error:".mysql_error();
                   echo"<br>Query:".$query; 
      } } ?>

挿入するテーブルはこんな感じ

                    +----------------+-------------+----------------------+
                    |constituency_id |  state_id   |   constituency_name  |  
                    +----------------+-----   -----+----------------------+

コードを実行すると、「行が挿入されていません」が画面に表示されます

私を助けてください。どうもありがとうございました。

エラーが表示されました

    Error: You have an error in your mysql syntax; check the manual that corresponds to your mysql server for the right syntax to use near " at line 2

Query:
4

1 に答える 1

0
<?php
$constituencys = $_POST['constituency']; 
$state_id = $_POST['state_id']; 

$i = 0;
while($i<count($constituencys)){
    $constituencys[$i]= $constituencys[$i];
    $state_id[$i]= $state_id[$i];
    $query = "INSERT INTO `constituency` ( 
        `constituency_id`, `state_id`, `constituency_name`
        ) VALUES (
        NULL,
        '".$state_id[$i]."',
        '".$constituencys[$i]."'
        "; 

    mysql_query($query);          
    $i++;  
}

if(mysql_affected_rows()>0){
    echo "Inserted Successfully";
} else {
    echo "No Row Inserted";
    echo "<br><br>Error: " . mysql_error();
    echo "<br><br>Query: " . $query;
} 
?>

最初にこのコードを試して、結果で投稿を更新してください。

アップデート

'ダーティ'入力があるようです。mysql_real_escape_stringを使用して、挿入する前にmysql用にサニタイズしてください。次のコードを試してください。

<?php
$constituencys = $_POST['constituency']; 
$state_id = $_POST['state_id']; 

$i = 0;
while($i<count($constituencys)){
    $constit = mysql_real_escape_string($constituencys[$i]);
    $state = mysql_real_escape_string($state_id[$i]);
    $query = "INSERT INTO `constituency` ( 
        `constituency_id`, `state_id`, `constituency_name`
        ) VALUES (
        NULL,
        '$state',
        '$constit')
        "; 

    mysql_query($query);          
    $i++;  
}

if(mysql_affected_rows()>0){
    echo "Inserted Successfully";
} else {
    echo "No Row Inserted";
    echo "<br><br>Error: " . mysql_error();
    echo "<br><br>Query: " . $query;
} 
?>

注意:クエリの最後に、閉じ括弧がありません。2番目の例で追加されています。テストを続行する前に、そこにあることを確認してください。

<?php
$constituencys = $_POST['constituency']; 
$state_id = $_POST['state_id']; 

$query = "INSERT INTO `constituency` (`constituency_id`, `state_id`, `constituency_name`) VALUES";

for($i=0; $i<count($constituencys); $i++){
    $constit = mysql_real_escape_string($constituencys[$i]);
    $state = mysql_real_escape_string($state_id[$i]);
    $query .= "(NULL, '$state', '$constit'), "; 
}
$query = substr(trim($query), 0, -1); //trims then removes trailing comma
mysql_query($query);          

if(mysql_affected_rows()>0){
    echo "Inserted Successfully";
} else {
    echo "No Row Inserted";
    echo "<br><br>Error: " . mysql_error();
    echo "<br><br>Query: " . $query;
} 
?>

HTML入力が配列として正しく設定されていると仮定すると、これは機能するはずです。また、コードを整理し、不要なラグを解消します。ミリ秒ごとにカウントされます。:)これが機能しない場合は、返されたエラーを投稿して、もう一度クエリしてください。

于 2012-06-23T05:40:31.147 に答える