0

だから私はこのコード (以下) を持っており、繰り返される行のスタックを単一の単純なループに単純化して、指定され入力 (9 など) が URL と LISTNUM の値をインクリメントするようにしたいと思います。これは本当に単純かもしれませんが、何らかの理由で頭を悩ませることができません-単に他の変数内の変数を処理する方法がわからないためです... $_POST[$n] のように

if ($_POST[subby] == "subby" )
{

        try {
        $dbh = new PDO('mysql:host=db2asdfasdf.net;dbname=adsfasdf04', $user, $pass);
          echo "Connected\n";
        } 
        catch (Exception $e) {
          die("Unable to connect: " . $e->getMessage());
        }

        try {  
          $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

          $dbh->beginTransaction();
          $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video1], 1)");
          $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video2], 2)");
           $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video3], 3)");
            $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video4], 4)");
             $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video5], 5)");
              $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video6], 6)");
                      $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video7], 7)");
                              $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video8], 8)");
                                      $dbh->exec("insert into vim_playlist4 (url, listnum) values ($_POST[video9], 9)");


          $dbh->commit();

        } 
        catch (Exception $e) {
          $dbh->rollBack();
          echo "Failed: " . $e->getMessage();
        }

}
else 
{}
4

1 に答える 1

-1

次のように挿入できます。

insert into vim_playlist4 (url, listnum) values 
($_POST[video1], 1), 
($_POST[video2], 2),
($_POST[video3], 3), 
($_POST[video4], 4)

現在、SQL インジェクションが発生しやすい領域が多数あるため、挿入する前にデータをサニタイズすることを忘れないでください。

データをサニタイズする方法は次のとおりです。

<?php
$dbh->beginTransaction();
$sql = $dbh->prepare("insert into vim_playlist4 (url, listnum) values 
(?, 1), (?, 2), (?, 3), (?, 4), (?, 5), (?, 6), (?, 7), (?, 8), (?, 9)");

$sql->execute(array($_POST["video1"], $_POST["video2"], $_POST["video3"],
    $_POST["video4"], $_POST["video5"] ,$_POST["video6"], $_POST["video7"],
    $_POST["video8"], $_POST["video9"]));

$dbh->commit();
于 2013-04-28T16:05:27.837 に答える