Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询错误处理日期字段_Php_Mysql_Date - Fatal编程技术网

Php MySQL查询错误处理日期字段

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($

我有一个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);
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同时识别了相同的问题。关于插入的好观点。。。选择