没有插入mysql数据库中的值

时间:2013-09-20 20:54:20

标签: php mysql

我已经制作了这个小小的代码来跟踪各种来源的日常开支和收入。 无论如何,第一个查询增加记录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');
    }
}
?>

2 个答案:

答案 0 :(得分:0)

您要发布两次相同的查询!

使用以下插入声明:(我已经包括Victor的回答 - 谢谢!)

$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的{​​{1}},但已插入...

并且考虑使用预准备语句......以及mysqli _ * - 函数或PDO。

  

Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial

答案 1 :(得分: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应该在哪里?