0

誰かが電子メールを入力したときに、会社 ID、ユーザー ID、トランザクションの日時を挿入するスクリプトがあります。次に、ドロップダウン選択ボックスを追加して、ユーザーが寄付したい寄付の数を選択できるようにする必要があります。これにより、メール アドレスを 1 回入力するだけで済みます。これについて最善の方法は何ですか?私は次のようなことを考えていました:

$coid = $row['companyid'];
$userid = $_SESSION['userid'];
$selectbox = $_POST['select']; // number value 1-10

// old query
mysql_query = ("INSERT INTO donations(company, user)");

// new query
$i=1
while($i<=$selectbox) {
mysql_query = ("INSERT INTO donations(company, user)");
$i++
}

またはそれらの線に沿った何か。それが最善の方法ですか?より良い方法は?

4

2 に答える 2

0

まず、非推奨mysql_になっている関数の使用を停止します。代わりにor関数を使用してください。mysqli_PDO

SQL インジェクションを防ぐために、準備済みステートメントを使用するか、変数をサニタイズする必要があります。

より良いアプローチに関しては、それらを配列に入れて、実行時に内破することができます。これは良い出発点です。PDO を使用して配列を挿入します。

現在のコードでは、寄付を希望するユーザーの数をどのように追跡しているかはわかりませんが、次のようなことができます。

$i = 1;
while($i <= $selectbox) {
$insertArray[] = "$coid, $userid";
$i++;
}

mysql_query("INSERT INTO donations (company, user) VALUES (" . implode('), (', $insertArray) . ")");
于 2012-11-26T20:21:18.357 に答える
0

3 つの列を持つデータベース テーブルを作成する必要があります (この質問の場合)。

必要なテーブルを作成するためのコードを提供します。これをコピーして PHPmyAdmin に貼り付けるだけです。

Create Table donations(
company_id int,
user_id int,
donate_num int,
datetime DATETIME
)

次に、INSERT INTO関数を使用して、新しい mysqli 関数を使用してデータベースを更新します (サーバー/ユーザー名などをデータベースの詳細に置き換えます)。

$mysqli= new mysqli('SERVER','USERNAME','PASSWORD','DATABASE NAME')
if ($mysqli->connect_error) {
            die('Connect Error (' . $mysqli->connect_errno . ') '
                    . $mysqli->connect_error);
        }

function escapeStringSlash($value) {

            global $mysqli;
           if (get_magic_quotes_gpc()) {
               $value = stripslashes($value);
           }

           if (!is_numeric($value)) {
               $value = $mysqli->real_escape_string($value);
           }
           return $value;
        }

$coid=escapeStringSlash($row['companyid']);
$userid = escapeStringSlash($_SESSION['userid']);
$selectbox = escapeStringSlash($_POST['select']);
$date = new DateTime();
$currentTime = $date->format("Y-m-d H:i:s");


if($insertDonations=$mysqli->query("INSERT INTO donations(company_id,user_id,donate_num,datetime) VALUES(".$coid.",".$userid.",".$selectbox.",'".$currentTime."')"){
echo "Number of donations received";
}else{
echo "There was a problem inserting this.";
}
$mysqli->close();
于 2012-11-26T20:55:22.720 に答える