第一个问题:mysql中的日期显示以及如何添加ERROR LOG?
FILES:
CONFIG.PHP
<?php
$db['server'] = 'xxxxxx';
$db['user'] = 'xxxxx';
$db['password'] = 'xxxxx';
$db['dbname'] = 'xxxxx';
$conn = mysql_connect($db['server'],$db['user'],$db['password']);
mysql_select_db($db['dbname'],$conn);
?>
adiciona.php
<?php
include 'config.php';
$email = $_POST['email'];
$data = date("d/m/Y \à\s H:i:s");
$query = "INSERT INTO `email` ( `email` , `data`, '')";
?>
现在通讯代码:
<!-- Newsletter Form -->
<div id="newsletter_form" class="col-md-12">
<div class="clearfix">
<form id="subscribe-form" class="subscribe-form" action="/adiciona.php" method="post">
<input type="email" name="email" class="subscribe-input" placeholder="Escreva seu endereço de email...">
<button type="submit" class="subscribe-submit">Inscrever-se</button>
</form>
</div>
</div>
</div> <!-- /.row -->
答案 0 :(得分:1)
您正在使用:
$query = "INSERT INTO `email` ( `email` , `data`, '')";
(缺少VALUES
和变量)
这应该是:
$query = "INSERT INTO `email` (`email` , `data`, '') VALUES ('$email', '$data')";
如果email
和data
是您的列名。
但是,我不确定您在查询中使用''
的原因。
所以你可以做/尝试这个:
$query = "INSERT INTO `email` (`email` , `data`) VALUES ('$email', '$data')";
将or die(mysql_error())
添加到mysql_query()
,这会发出错误信号。
您需要详细说明,如果是因为您将其用作AUTO_INCREMENT
列的空值。
标准的INSERT语法是:
INSERT INTO table (column_1, column_2) VALUES ('value_1', 'value_2')
请查看MySQL.com上的手册:
您目前的代码向SQL injection开放。使用mysqli
with prepared statements或PDO with prepared statements。
对于Date appears 0000-00-00
,为什么不使用NOW()
代替现在使用的内容。
示例:
$query = "INSERT INTO `email` (`email`, `data`) VALUES ('$email', NOW() )";
并确保该列是正确的DATE
或DATETIME
类型。
然而,MySQL正在寻找Y-m-d
并且您正在使用d/m/Y
,这将解释为什么它们都是零,包括使用\à\s
$data = date("d/m/Y \à\s H:i:s");
所以只需删除并使用$data = date("Y/m/d H:i:s");
使用Y/m/d
。有关这方面的更多信息如下。
阅读有关这些的手册:
并按照手册:
非法DATE,DATETIME或TIMESTAMP值将转换为相应类型的“零”值('0000-00-00'或'0000-00-00 00:00:00')。
“如何添加错误日志”