0

我制作了这个小代码来跟踪我的日常开支和各种来源的收入。无论如何,第一个查询会增加记录 id + 添加时间。但是,第二个查询似乎没有做任何事情。有任何想法吗?这是代码:-

<?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

您两次发布相同的查询!

使用以下插入语句:(我已经包含了维克多的答案 - 谢谢!)

$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($query2, $db);

对于$result2您最初也执行$query过,但已经插入...

考虑使用准备好的语句......以及 mysqli_*-functions 或 PDO。

请不要mysql_*在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。如果您选择 PDO,这里有一个很好的教程

于 2013-09-20T21:08:12.570 回答
0

您的代码似乎存在一些(潜在的)问题。

首先,您两次都错过了右括号)$query2

其次,在查询中引用时需要$amt用引号引起来。否则,当它为空(即$amt == '')时,查询将失败。

第三,您在第二个中的$query两个mysql_query调用中引用case

第四,虽然本身不​​是问题,但我假设所有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"

哪个不起作用(如前所述)看到两个没有价值的逗号 -$amt应该在哪里?

于 2013-09-20T21:25:41.880 回答