Php MySQL查询错误处理日期字段
我有一个PHP/MySQL脚本,它在日期字段上产生奇怪的结果。在整个过程中,我的约会一直很顺利,直到最后。最终结果的日期字段中的每个条目都为“0000-00-00”。我完全被卡住了,不知道还能做什么。我可以看出这是一个PHP没有将其解释为日期的问题,但我不知道如何修复它。这是我的密码:Php MySQL查询错误处理日期字段,php,mysql,date,Php,Mysql,Date,我有一个PHP/MySQL脚本,它在日期字段上产生奇怪的结果。在整个过程中,我的约会一直很顺利,直到最后。最终结果的日期字段中的每个条目都为“0000-00-00”。我完全被卡住了,不知道还能做什么。我可以看出这是一个PHP没有将其解释为日期的问题,但我不知道如何修复它。这是我的密码: $sql = "CREATE TABLE temp_workouts (my_date date, sg_id int(11), loc_id int(11))"; $result = mysql_query($
$sql = "CREATE TABLE temp_workouts (my_date date, sg_id int(11), loc_id int(11))";
$result = mysql_query($sql);
if (!$result) {
$tag_success = "failure";
$tag_message = mysql_error();
echo encodeJSON($tag_success, $tag_message);
die();
}
$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$my_date = $row['my_date'];
echo $my_date . " "; //<--this output looks perfect
$sql = "INSERT INTO temp_table (my_date) VALUES ($my_date)";
$result2 = mysql_query($sql);
}
die();
当我转到MyPHPAdmin并查看该表时,整个my_date列包含“0000-00-00”。如何让PHP将其识别为“Y-m-d”格式的日期?谢谢非常感谢您的帮助。您当前的问题是在insert语句中没有在日期值周围使用引号 改变
$sql = "INSERT INTO temp_table (my_date) VALUES ($my_date)";
到
现在,您可以使用语法一次性实现您的目标
将我的日期插入临时表格
选择我的约会
从我的桌子上
因此,这部分代码
$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$my_date = $row['my_date'];
echo $my_date . " "; //<--this output looks perfect
$sql = "INSERT INTO temp_table (my_date) VALUES ($my_date)";
$result2 = mysql_query($sql);
}
一个旁注:考虑切换到或使用.< /P> < P>你的直接问题是在插入语句中不使用日期值的引号。
改变$sql = "INSERT INTO temp_table (my_date) VALUES ($my_date)";
到
现在,您可以使用语法一次性实现您的目标
将我的日期插入临时表格
选择我的约会
从我的桌子上
因此,这部分代码
$sql = "SELECT * FROM my_table";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) {
$my_date = $row['my_date'];
echo $my_date . " "; //<--this output looks perfect
$sql = "INSERT INTO temp_table (my_date) VALUES ($my_date)";
$result2 = mysql_query($sql);
}
一个旁注:考虑切换到或使用.< /P> < P>我怀疑问题是您没有在单引号中包含字符串文字:
INSERT INTO temp_table (my_date) VALUES ('$my_date')
^--- ^--- string literals in single quotes
否则,该语句可能类似于:
... VALUES (2013-08-22)
MySQL没有将其转换为有效日期、发出警告消息并插入零日期。我怀疑问题在于您没有将字符串文字括在单引号中:
INSERT INTO temp_table (my_date) VALUES ('$my_date')
^--- ^--- string literals in single quotes
否则,该语句可能类似于:
... VALUES (2013-08-22)
MySQL没有将其转换为有效日期、发出警告消息并插入零日期。试试这个……这会将其重新转换为日期,然后保存
$dt = strtotime($row['my_date']);
$date = date("Y-m-d",$dt);
$sql = "INSERT INTO temp_table (my_date) VALUES ({$date})";
试试这个…这会将它重新转换为日期,然后保存
$dt = strtotime($row['my_date']);
$date = date("Y-m-d",$dt);
$sql = "INSERT INTO temp_table (my_date) VALUES ({$date})";
看起来你可以直接插入临时表my_date从my_表中选择my_date;但是如果你不喜欢,你至少可以使用mysqli/PDO来准备insert查询,而不是反复运行查询;但是,如果您不喜欢这样,您至少可以使用mysqli/PDO来准备insert查询,而不是反复运行查询。+1同时发现了相同的问题。关于插入的好观点。。。选择。+1同时识别了相同的问题。关于插入的好观点。。。选择