我有一个网页,我希望从MySQL数据库中提供事件信息。我有一个PHP函数提供此事件信息,我正在尝试包含事件的日期时间,但我想使用mysql中的date_format
函数对其进行格式化。
我目前尝试的PHP功能如下:
function eventbox() {
$events = mysql_query('SELECT * FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id),');
while($row = mysql_fetch_array($events)) {
$loopResult .= '
<div class="eventbox">
<div class="eventtitle">'.$row['eventname'].'</div>
<div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>
<div class="eventvenue">'.$row['name'].'</div>
<div class="tie-inbuttonholder">
<button type="button">tie-in</button>
</div>
<div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div>
</div>
';
}
echo $loopResult;
}
我基本上想要从表中获取DateTime行,并以&#34; 2014年5月19日星期一晚上7点&#34;
的格式显示如果有人能够阐明这一点以及如何正确完成这项功能,那将会非常有用!
UPDATE /编辑:
所以我在@Prior的帮助下更新了该功能,并且已经获取信息并再次填充页面上除<divs>
之外的所有<div class="eventdate">
。该功能现在为:
function eventbox() {
$loopResult = "";
$query = mysql_query("SELECT eventname, name, eventicon, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)");
while($row = mysql_fetch_array($query)) {
$loopResult .= '
<div class="eventbox">
<div class="eventtitle">'.$row['eventname'].'</div>
<div class="eventdate">'.$row['DATE_FORMAT(eventtime)'].'</div>
<div class="eventvenue">'.$row['name'].'</div>
<div class="tie-inbuttonholder">
<button type="button">tie-in</button>
</div>
<div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div>
</div>
';
}
echo $loopResult;
}
现在唯一的问题是,当我运行脚本时,我得到了错误代码;
注意:未定义的索引:第23行的/var/www/test/test_func.inc.php中的DATE_FORMAT(eventtime)
第23行将是:
<div class="eventdate">'.$row['DATE_FORMAT(eventtime)'].'</div>
我尝试了许多不同的方法来格式化这部分功能,包括
(据说我运行.date_format($row...
方法的错误略有不同);
<div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>
<div class="eventdate">'.date_format($row ['eventtime'], '%a %b %dth %Y at %h:%i%p').'</div>
<div class="eventdate">'.date_format($row['eventtime'], 'l M d\t\h Y \a\t g:iA').'</div>
<div class="eventdate">'.$row['DATE_FORMAT(eventtime, 'g:ia \o\n l jS F Y')'].'</div>
etc...
有关我可以采取哪些措施来解决此问题的建议?当我对我的服务器运行SQL查询时,我得到了一个完美的表,并且该函数的所有其他部分都运行良好。
谢谢!
答案 0 :(得分:0)
您要查找的格式字符串是%a %b %dth %Y at %h:%i%p
(Consult the Mysql-Manual)。
所以你的整个SQL-Query看起来像这样(我在查询结束时忽略了你的尾随逗号):
SELECT eventname, name, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p`') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)
请注意以下事项:
$row ['eventtime']
而不是$row ('eventtime')
您的整个代码如下所示:
function eventbox() {
$loopResult = "";
$mysqli = ... //Initialize Databaseconenction here
$query = $mysqli->prepare("SELECT eventname, name, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p`') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)");
$query->execute();
$query->bind_result($eventname, $name, $eventtime);
while($query->fetch()) {
$loopResult .= '
<div class="eventbox">
<div class="eventtitle">'.$eventname.'</div>
<div class="eventdate">'.$eventtime.'</div>
<div class="eventvenue">'.$name.'</div>
<div class="tie-inbuttonholder">
<button type="button">tie-in</button>
</div>
<div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div>
</div>
';
}
$query->close();
$mysqli->close();
echo $loopResult;
}
答案 1 :(得分:0)
我在这里有解决方案,可以使用PHP date_format函数以您想要的格式呈现它。这更容易。并且还使用括号代替括号。
更改此行:
<div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>
为:
<div class="eventdate">'.date_format($row['eventtime'], 'l M d\t\h Y \a\t g:iA').'</div>