0

さまざまなソースからの日々の支出と収入を追跡するために、この小さな小さなコードを作成しました。とにかく、最初のクエリはレコード ID をインクリメントし、時間を追加します。しかし、2 番目のクエリは何もしていないようです。何か案は?コードは次のとおりです:-

<?php
error_reporting(E_ALL);
include('dbconnector.php');
if(isset($_REQUEST['action']))
{
    switch($_REQUEST['action'])
    {
        case 'inpute':
        $amt=(isset($_POST['amt'])) ? $_POST['amt'] : '';
        $desc=(isset($_POST['desc'])) ? $_POST['desc'] : '';
        if(!empty($amt) && !empty($desc))
        {
            $query = 'insert into tb1(record_id,record_date) values (NULL,now())';
            $result = mysql_query($query, $db);
            $query2='insert into input(record_input_id,amt_in,in_desc) values (NULL,"' . $amt . '", "' . $desc . '"';
            $result2=mysql_query($query2, $db);
            if($result && $result2)
            {
                header('Location: index.php');
            }
            else
            {
                echo "Error";
            }
        }
        else
        {
            echo "value cannot be null";
            header('Refresh:3;URL = index.php');
        }
        break;
        case 'outpute':
        $amt=(isset($_POST['amt'])) ? $_POST['amt'] : '';
        $desc=(isset($_POST['desc'])) ? $_POST['desc'] : '';
        if(!empty($amt) && !empty($desc))
        {
            $query = 'insert into tb1(record_id,record_date) values (NULL,now())';
            $result = mysql_query($query, $db);
            $query2='insert into output(record_output_id,amt_out,out_desc) values(NULL,$amt, "' . $desc . '"';
            $result2=mysql_query($query, $db);
            if($result && $result2)
            {
                header('Location: index.php');
            }
            else
            {
                echo "Error";
            }
        }
        else
        {
            echo "value cannot be null";
            header('Refresh:3;URL = index.php');
        }
        break;
        default:
        header('Location: index.php');
    }
}
?>
4

2 に答える 2

0

コードにいくつかの (潜在的な) 問題があるようです。

まず、閉じ括弧がありません)-$query2どちらの場合も。

$amt次に、クエリで参照するときに引用符で囲む必要があります。それ以外の場合、空 (つまり$amt == '') の場合、クエリは失敗します。

$query3 番目に、2 番目の の 2つのmysql_query呼び出しで参照しますcase

第 4 に、それ自体は問題ではありませんが、フィールドrecord_idrecord_*_idフィールドはすべて自動インクリメントに設定されていると思いますか? この場合、クエリからそれらを完全に省略できます (に設定するのではなくNULL) 。

クエリは次のようになります。

$query2="insert into input(amt_in, in_desc) values ('$amt', '$desc')";

$query2="insert into output(amt_out,out_desc) values('$amt', '$desc')";

より詳しい情報

上記が機能しない場合は、問題のmysql_query呼び出しの後に次を挿入してみてください。

echo $query, "<br>"; //Use $query or $query2 depending on what one you called!
echo mysql_error(), "<br>";

これにより、スローされたエラーと、デバッグ時に非常に役立つ使用済みの SQL ステートメントが表示されます。

たとえば、$amtが空の場合のクエリでは、クエリは次のようになります。

insert into output(record_output_id,amt_out,out_desc) values(NULL,, "descending"

値のない 2 つのコンマが表示されます ( 2 番目に述べたように) どちらが機能しませ$amtんか?

于 2013-09-20T21:25:41.880 に答える