1

我正在尝试将变量中的日期插入 mysql 数据库。列的格式是日期,列中有日期。列中的日期看起来像 yyyy-mm-dd

我的日期变量也看起来像这样,但是它不会将日期插入列中,即使我没有收到错误只是一个白屏。

<?php
//here is the code to insert this does not work
mysql_query("INSERT INTO `invoices` (account_id, purchased_date, sales_rep, INV_ID)
VALUES ('".$acctid."', '".$date"','".$row['8']."', '".$invid."' )") or die("load1 -" . mysql_error());


<?php 
//this does work but it does not have the date.
mysql_query("INSERT INTO `invoices` (account_id, sales_rep, INV_ID)
    VALUES ('".$acctid."', '".$row['8']."', '".$invid."')") or die("load1 -" . mysql_error());

不确定是什么问题。我已经在屏幕上显示了 $date 变量,它看起来很好。2012-06-01

所以我不确定为什么它不能将它插入数据库。

4

4 回答 4

4

您的错误是您在此行中有一个解析错误:

VALUES ('".$acctid."', '".$date"','".$row['8']."', '".$invid."' )")

您的服务器已display_errors关闭,因此您看不到致命错误输出。

您可以通过添加连接运算符 ( ) 来修复它,.如下所示:

VALUES ('".$acctid."', '".$date."','".$row['8']."', '".$invid."' )")

此外,在未来,我发现这样编写查询更具可读性:

VALUES ('{$acctid}', '{$date}', '{$row['8']}', '{$invid}')

如果您不想使用插值(即上面使用的字符串“注入”的方法),您仍然可以使用连接(您的原始方法)但使用空格使其更具可读性(并且在尝试执行之前更容易找到语法错​​误它):

"VALUES ('" . $acctid . "', '" . $date . "' , '" . $row['8'] . "', '" . $invid . "')";

在所有讨厌我的人因为我建议插值而不是串联而回避之前,让我向您推荐@rasmus的这条推文,指出插值实际上比串联快,这些天。

于 2012-06-08T13:55:34.333 回答
1
<?php
//here is the code to insert this does not work
mysql_query("INSERT INTO `invoices` (account_id, purchased_date, sales_rep,   INV_ID) VALUES ('".$acctid."', '".$date"','".$row['8']."', '".$invid."' )") or die("load1 -" .     mysql_error());
?>

错误是:

PHP Parse error:  syntax error, unexpected T_CONSTANT_ENCAPSED_STRING on line 1

没有.$date

于 2012-06-08T13:58:23.590 回答
0

尝试使用new \DateTime('yyyy-mm-dd')

<?php
//here is the code to insert this does not work
mysql_query("INSERT INTO `invoices` (account_id, purchased_date, sales_rep, INV_ID)
VALUES ('".$acctid."', '".new \DateTime('yyyy-mm-dd')."','".$row['8']."', '".$invid."' )") or die("load1 -" . mysql_error());
于 2012-06-08T14:14:01.880 回答
-1

您可以使用

mysql_query("INSERT INTO `vipanda2`.`invoices` (account_id, purchased_date, sales_rep, INV_ID)
VALUES ('".$acctid."', '".date('Y-m-d',mktime(0, 0, 0, date("m", $date), date("d", $date), date("Y", $date)))."','".$row['8']."', '".$invid."' )") or die("load1 -" . mysql_error());
于 2012-06-08T14:00:00.540 回答