SQL Query 没有使用 DATE_FORMAT 方法重新格式化 PHP 文件的日期?
Posted
技术标签:
【中文标题】SQL Query 没有使用 DATE_FORMAT 方法重新格式化 PHP 文件的日期?【英文标题】:SQL Query is not reformatting date on PHP file using DATE_FORMAT method? 【发布时间】:2018-08-29 19:47:39 【问题描述】:默认情况下,phpMyAdmin 的日期时间列格式为 YYYY-MM-DD,但我正在尝试使用我的 PHP 文件上的 SQL 语句将其重新格式化为 MM-DD-YYYY。这是我使用的代码,但它不起作用:
<?php
$usertext = $_POST['textinput'];
$insertsql = "INSERT INTO testtext (usertext) VALUES ('$usertext')";
if (isset($_POST['textinput']))
require '../db.php';
mysqli_query($db, $insertsql);
$selectdate = "SELECT textdate, DATE_FORMAT(textdate,'%m/%d/%Y') AS newdate FROM testtext";
$dateresult = mysqli_query($db, $selectdate);
while ($row = mysqli_fetch_assoc($dateresult))
echo "$row['textdate']<br>";
?>
此代码能够很好地将“textdate”列中的行显示到我的测试站点上,但 DATE_FORMAT 代码无法重新格式化日期。你能帮我修复这个代码吗?非常感谢。
【问题讨论】:
你的脚本有SQL Injection Attack的风险看看Little Bobby Tables发生了什么甚至if you are escaping inputs, its not safe!使用prepared parameterized statements。 更新您的问题并添加适当的数据样本..$row['newdate']
长什么样子?
@rickdenhaan $row['newdate'] 不显示日期,只是一个空字符串。 $row['textdate'] 确实显示了日期,但不是以所需的格式。
@John Conde 感谢您提供信息并让我知道。我只是先测试这个脚本,因为它更容易。之后我打算从事安全工作。
【参考方案1】:
您正在调用您的格式化日期newdate
,但在您的代码中指的是textdate
。您需要引用您将 DATE_FORMAT()
的结果分配给的别名,而不是原始列标识符。
while ($row = mysqli_fetch_assoc($dateresult))
echo "$row['newdate']<br>";
【讨论】:
但是当我将其更改为 $row['newdate'] 时,日期不显示。我认为这是因为我的数据库中的表名为“textdate”而“newdate”不存在。 执行var_dump($row);
并查看结果中是否存在该值
@codo7081 不,你错了。 Newdate 是一个字段别名。如果那里没有显示任何内容,则说明转换出错并返回 null,或者发生了其他错误。
@John Conde 嘿,现在可以了!看来我应该回应 newdate 代替。非常感谢您的帮助!以上是关于SQL Query 没有使用 DATE_FORMAT 方法重新格式化 PHP 文件的日期?的主要内容,如果未能解决你的问题,请参考以下文章