我从数据库中选择并在表格中回显结果。在我将一个列数据类型从varchar
更改为date
之前,一切正常。我的第一个查询(当列Date_PP数据类型为varchar
时)是:
$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8
FROM MyTable
WHERE Com>=12
ORDER BY Date_PP ";
没问题,但是Date_PP
是一个字符串,而不是真实的日期数据。将db列从varchar
更改为date
后,我将查询修改为:
$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8,
DATE_FORMAT(Date_PP, '%Y-%m-%d') AS Date_PP
FROM MyTable
WHERE Com>=12
ORDER BY Date_PP ";
完整的代码是:
$queryitem = "SELECT Date_PP, Com, Doc, Place, p1, p2, p3, p4, p5, p6, p7, p8,
DATE_FORMAT(Date_PP, '%Y-%m-%d') AS Date_PP
FROM MyTable
WHERE Com>=12
ORDER BY Date_PP ";
if ($result = $link->query($queryitem)) {
if ($success = $result->num_rows > 0) {
$ac=0;
while ($row = $result->fetch_row()) {
echo "<tr>";
echo "<td > ".$row[1]." ".$row[2]."</td>";
echo "<td > ".$row[3]."</td>";
if ($row[0]=="" or isnull($row[0])) {
echo "<td > not yet </td>";
}
else {
echo "<td> ".$row[0]." </td>";
}
for ($i = 4; $i <= 11; $i++) {
echo "<td >".$row[$i]."</td>";
}
echo "</tr>";
}
}
}
但现在我无法回应结果。当回显$row[0]
时代码停止。我的猜测是日期数据不再是&#34;放置&#34;在$row[0]
,但无法使其发挥作用。任何人都可以发现问题吗?
答案 0 :(得分:1)
您更改了列的类型。如果列的内容与新类型不兼容,则将其删除,可能是null
或其他适当的“零值”。你已经破解了你的数据。希望你有一个备份!
对于记录,date
列的行为类似于YYYY-MM-DD
格式的字符串值。你给它,它以内部格式存储它,并返回该格式。你不需要在那里做任何事情。