【问题标题】:Removing backslash from date() [closed]从 date() 中删除反斜杠 [关闭]
【发布时间】:2016-09-06 21:48:26
【问题描述】:

我正在尝试将 SQL 日期时间转换为 Y/m/d G:i:s 格式。 它已经格式化,但是每个前斜杠前面都有一个额外的反斜杠...我尝试了 str_replace 和 stripslashes ,但没有一个起作用...

数据:http://www.zewde.org/instagram/script_new/data.php

代码:

<?php
define('DB_NAME', 'FollowersCount');
define('DB_USER', '******');
define('DB_PASSWORD', '******');
define('DB_HOST', '*.*.*.*');

$connection = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);

if (!$connection) {
  die('Could not connect: ' . mysql_error());
}

mysql_select_db("FollowersCount", $connection);

$sth = mysql_query("SELECT Date FROM Count ORDER BY Date");
$sthh = mysql_query("SELECT Count FROM Count ORDER BY Date");


$sthhh = mysql_query("select a.ID, a.Count,coalesce(a.Count -(select b.Count from Count b where b.ID = a.ID - 1), 5) as diff from Count a ORDER BY Date");


$rows = array();
while(($r = mysql_fetch_array($sth)) && ($rr = mysql_fetch_array($sthh)) && $rrr = mysql_fetch_array($sthhh)) 
{
    $temp_count = intval($rr['Count']); 
    $temp_date1 = $r['Date'];

    $myFormatForView = date("Y/m/d G:i:s", strtotime($temp_date1));
    $final = str_replace("\\", "", $myFormatForView); //Doesn't work, neither does stripslashes...


    $temp = array( $final, $temp_count);
    $temp_s = implode(", ", $temp);
    $rows['data'][][] = $temp_s;
}


$result = array();
array_push($result,$rows);
$Jz = json_encode($result, JSON_NUMERIC_CHECK);

echo $Jz;

mysql_close($connection);
?>

【问题讨论】:

  • 您正在输出 JSON。 \/ 是您在 JSON 字符串中表达 / 的方式。数据中没有\,那只是编码。
  • 在stackoverflow上,编辑它对你没有帮助,它仍然存在。要求模组完全删除问题并更改密码!
  • 感谢您的帮助,tkausl 的答案是正确的 :)
  • 另外请重新搜索MySQLiPDO,因为 MySQL_ 现在已弃用,一般来说不安全,甚至在 PHP7 中也不可用。请至少translate all your MySQL_ code to MySQLi_

标签: php mysql date backslash


【解决方案1】:

这是json_encodes 的错误。

json_encode() options:

JSON_UNESCAPED_SLASHES
不要逃避/。自 PHP 5.4.0 起可用。

所以

$Jz = json_encode($result, JSON_NUMERIC_CHECK | JSON_UNESCAPED_SLASHES );

应该去掉那些反斜杠。

【讨论】:

  • 上帝保佑你,谢谢你。我挠了挠头,哈哈。没想到这么快就有答案了。干杯!我不明白为什么我总是被否决......
  • @Lofty 人们通常会否决快速解决的问题,因为这往往表明提出问题的人在提出问题之前没有做足够的研究。 Stack Overflow 不打算作为修复相对新手错误的第一点(尽管它正在慢慢变成这样)
【解决方案2】:

最好直接在查询中格式化您的日期...

SELECT DATE_FORMAT(Date,'%Y/%m/%d %k:%i:%s') AS niceDate
FROM Count 
ORDER BY Date

请参阅here 了解所有格式化选项

【讨论】:

  • 这是一个更简洁更简洁的解决方案。
猜你喜欢
  • 2019-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-28
  • 1970-01-01
相关资源
最近更新 更多