我已经制作了这个小小的代码来跟踪各种来源的日常开支和收入。 无论如何,第一个查询增加记录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');
}
}
?>
答案 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,并使用PDO或MySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial。
答案 1 :(得分:0)
您的代码似乎存在一些(潜在的)问题。
首先,您错过)
上的结束括号$query2
- 两次。
其次,在查询中引用时,需要将$amt
放在引号中。否则当它为空时(即$amt == ''
),查询将失败。
第三,您在第二个$query
中的两个mysql_query
来电中引用case
。
第四,虽然本身不是问题,但我假设所有record_id
和record_*_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
应该在哪里?