我正在尝试将变量中的日期插入到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
所以我不确定为什么它不能将其插入数据库。
答案 0 :(得分: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 . "')";
在所有仇敌回避建议插值连接之前,让我通过this tweet向你推荐@rasmus,说明插值实际上比连接更快,这些天。
答案 1 :(得分: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
。
答案 2 :(得分: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());
答案 3 :(得分:-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());