【发布时间】:2012-05-18 17:25:41
【问题描述】:
在我的应用程序中,我有一个适用于多个用户的通用查询。在某些情况下,用户之间的表结构可能不同。我有一个查询,我只想将其应用于表中存在该列的用户。
function get_item($user_id) {
global $dbh;
$sth = $dbh->query ("SELECT item_type FROM items WHERE user_id = '$user_id'");
$row = $sth->fetch();
$item_type = $row['item_type'];
return $item_type;
}
如果我的表中不存在列“item_type”,我想忽略它,并将 $item_type 变量设置为 NULL。
对于这些用户,我在查询代码行中收到错误:
致命错误:带有消息的未捕获异常“PDOException” 'SQLSTATE [42S22]:找不到列:1054 中的未知列 'item_type' /item_display.php:5 中的“字段列表”
有什么想法吗?
【问题讨论】:
-
能不能不要在桌子上做一个SELECT *,然后在PHP中检查$row['item_type']是否设置了?
-
@andrewsi 如果我这样做,NULL 值(即未回答的值)不会区分那些与表中不存在的值。
-
啊,确实如此 - 我不知道。另一方面,$row 会有一个 'item_type' 的键,所以你可以检查它是否存在?