Mysql Drupal中的SQL。在哪里
以下作品Mysql Drupal中的SQL。在哪里,mysql,drupal,drupal-7,Mysql,Drupal,Drupal 7,以下作品 global $user; $items = array(); $sql = 'SELECT nid FROM {node} WHERE uid = :uid'; $result = db_query($sql, array(':uid' => $user->uid)); foreach ($result as $row) { $items[] = $row->nid; } dsm($items); 但是,当我想从同一数据库表中的“类型”列中选择内容类型“场所”
global $user;
$items = array();
$sql = 'SELECT nid FROM {node} WHERE uid = :uid';
$result = db_query($sql, array(':uid' => $user->uid));
foreach ($result as $row) {
$items[] = $row->nid;
}
dsm($items);
但是,当我想从同一数据库表中的“类型”列中选择内容类型“场所”时,我会使用以下命令出错
global $user;
$items = array();
$sql = 'SELECT nid FROM {node} WHERE uid = :uid AND type = venue';
$result = db_query($sql, array(':uid' => $user->uid));
foreach ($result as $row) {
$items[] = $row->nid;
}
dsm($items);
DOException:SQLSTATE[42S22]:未找到列:1054未知列
“where子句”中的“地点”:从{node}中选择nid,其中uid=:uid和
类型=场地;数组([:uid]=>1)
我真的不明白这里有什么。该列称为“类型”,我没有要求它查找名为“地点”的列,我是吗?将列与字符串进行比较时,您需要用引号将字符串括起来,如果您不这样做,优化器会将其视为一列(除非是数字)。试试这个:
$sql = "SELECT nid FROM {node} WHERE uid = :uid AND type = 'venue'"
当比较一个列和一个字符串时,您需要用引号将字符串括起来,如果不这样做,优化器会将其视为一个列(除非它是一个数字)。试试这个:
$sql = "SELECT nid FROM {node} WHERE uid = :uid AND type = 'venue'"
试试
“从{node}中选择nid,其中uid=:uid和type='venue'”
,它是一个常量文本,不是吗?试试“从{node}中选择nid,其中uid=:uid和type='venue'”
,它是一个常量文本,不是吗?谢谢!谢谢你提供的额外信息,帮助我了解它为什么不起作用!非常感谢。谢谢你提供的额外信息,帮助我了解它为什么不起作用!