0

私はコーディングが初めてで、cronとして実行するスクリプトを作成しようとしています。全体として、2番目のテーブルでIDを見つけるには、1つのテーブルから特定のタイプのユーザーが必要です。これは、より大きな Web サイト スクリプトでの会計タスクのためのものであるため、表を変更することはできません。

ユーザー テーブルの列は次のとおりです。id -- ユーザー名 -- パスワード -- 電子メール -- 削除済み

Deleted は 0 または 1 で、検索する列です。

transaction テーブルの列は次のとおりです。id -- time -- owner -- banker -- type -- amount -- reason

したがって、削除されていない一意のユーザー (0) を取得し、すべてのトランザクション (所有者) を調べて、すべてを合計する (金額) 必要があります。結果に対して何らかの計算を実行し、そのユーザーの新しいトランザクションを作成します。

これは私がこれまでに得たもので、Webscript 内のいくつかのコードからも少しハック作業を行っています。

<?php

$con=mysqli_connect("localhost", "username", "password", "database"); 

$uniqeMembers = mysqli_query($con,"SELECT DISTINCT id FROM users WHERE deleted='0'");

while ($id = $uniqueMembers->fetchRow())
    {
    $playerCreds = $playerCreds = getCol("SELECT SUM(amount) FROM transactions WHERE owner='$id' LIMIT 1");
    $interest = $playerCreds * .05;
    mysqli_query($con,"INSERT INTO transactions (time, owner, banker, type, amount, reason) VALUES ($TIMEMARK, $id, 14, 0, $interest, 'Interest')");
    }


mysqli_close($con);


?>

現在、コードは何もしていないようです。

何か助けはありますか?それとももっと簡単な方法ですか?

4

2 に答える 2

0

選択を挿入のデータのソースとして使用して、単一の挿入として行うのがおそらく最も簡単です。このようなもの(テストされていません)

<?php

$con=mysqli_connect("localhost", "username", "password", "database"); 

$uniqeMembers = mysqli_query($con,"INSERT INTO transactions (time, owner, banker, type, amount, reason) 
                SELECT '$TIMEMARK', users.id, 14, 0, (SUM(transactions.amount)) *0.05, 'Interest'
                FROM users 
                INNER JOIN transactions
                ON users.id = transactions.owner
                WHERE users.deleted='0'
                GROUP BY users.id");

mysqli_close($con);

?>
于 2013-07-07T21:40:58.957 に答える
0

コードにはかなりの数のエラーがありますが、次のように修正しました。

$con = mysqli_connect("localhost", "root", "root", "animals"); 
if(!$con){
    die("Error");
}
$uniqeMembers = mysqli_query($con,"SELECT DISTINCT id FROM users WHERE deleted='0'");

while ($id = $uniqeMembers->fetch_row())    {
    $transaction = mysqli_query($con, "SELECT SUM(amount) FROM transactions WHERE owner='".$id[0]."' ");
    $playerCreds = mysqli_fetch_array($transaction);
    $interest = $playerCreds[0] * .05;
    //mysqli_query($con,"INSERT INTO transactions (time, owner, banker, type, amount, reason) VALUES ($TIMEMARK, $id, 14, 0, $interest, 'Interest')");
    }


mysqli_close($con);
于 2013-07-07T21:46:50.877 に答える