0

したがって、同じデータベースで 2 つのスクリプトを実行していますが、それぞれに独自のテーブル (ユーザー、投稿など) があり、ポイント システムがあります。

今、私がやりたいことは、ポイントを別のポイントに送信できるようにすることです。名前と入力するポイントを含む簡単なフォームを作成しました。送信されると、情報を処理する別のページに送信され、ユーザーから所定の金額が取り除かれます (そのためのセッションを確認します)。与えられた名前 (他のスクリプトに登録されている)。

OK、処理時にポイントが取り除かれます(または、十分なポイントがない場合は「ポイントが不足しています」というエラーが表示されます)が、ポイントは他のアカウントに入金されません。これを解決することは可能ですか?

コードスニペットは次のとおりです。

// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('mods/points'); 
$pointst1 = request_var('pointst', 0);
$bsname1 = request_var('bsname', 0);

if ( $user->data['user_points'] < $pointst1 ){
echo "<b>You don't have enough points</b>";
}

else {
remove_points($user->data['user_id'], $pointst1);
mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'");
echo "<b>Points tranferred!</b>";
};

?>
4

1 に答える 1

0

いくつかのこと。

まず、SQL コミットの処理に関するこのサイトを確認することをお勧めします。これにより、あるユーザーからポイントを削除したり、他のユーザーにポイントを追加したりしないようにすることができます。現在のコード例で起こりうること

http://php.net/manual/en/mysqlnd-ms.transaction.php

第二に、この部分はphp変数をテキストとして渡しているようです

mysql_query("UPDATE users SET points = (points + $pointst1) WHERE name = '$bsname'"); echo "ポイントを転送しました! "

あなたはそれをに変更したいかもしれません

mysql_query("UPDATE users SET points = (points + {$pointst1} ) WHERE name = {$bsname}");
echo "<b>Points tranferred!</b>"

私は PHP プログラマーではないので、ここで私のロジックを確認できます: http://php.net/manual/en/language.operators.string.php

それが役に立てば幸い

于 2013-04-04T21:00:05.397 に答える