Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 7-db_select:where条件下的SQL函数_Sql_Drupal_Drupal 7 - Fatal编程技术网

Drupal 7-db_select:where条件下的SQL函数

Drupal 7-db_select:where条件下的SQL函数,sql,drupal,drupal-7,Sql,Drupal,Drupal 7,我需要在select语句中使用此条件: WHERE YEAR(date) = YEAR(CURDATE()) 但如果我这样做了,就像这样: $query = db_select('table', 't'); $query->fields('t'); $query->condition('YEAR\(date\)', 'YEAR(CURDATE())', '='); Drupal不会拥有它(即使我没有转义这些括号-它只是忽略它们),因为我得到了一个错误: Column not f

我需要在select语句中使用此条件:

WHERE YEAR(date) = YEAR(CURDATE()) 
但如果我这样做了,就像这样:

$query = db_select('table', 't');
$query->fields('t');
$query->condition('YEAR\(date\)', 'YEAR(CURDATE())', '=');
Drupal不会拥有它(即使我没有转义这些括号-它只是忽略它们),因为我得到了一个错误:

Column not found: 1054 Unknown column 'YEARdate' in 'where clause':

如何克服这个错误

嗯。。就这样,似乎:

$query->where('YEAR(date) = YEAR(CURDATE())');
其中
允许使用任意SQL:

where()方法允许添加任意SQL作为条件片段$代码段可以包含任何合法的SQL片段,如果它有可变内容,则必须使用命名占位符添加它。$args数组是占位符和值的数组,这些占位符和值将被替换到代码段中。由开发人员来确保代码段是有效的SQL。未对代码段进行特定于数据库的修改

嗯,您还可以使用,它允许您“在没有Drupal的情况下”编写SQL查询。 我的意思是,您可以添加自定义WHERE语句或任何SQL适当的函数,如自定义函数;)

例如

$result=db_query('从{node}中选择标题,其中type=“%s”和类似于“%%%s%%%”、'type'、'title'的标题);

使用
addExpression
方法:


使用addExpression,请参阅我的帖子
$query = db_select('table', 't');
$query->fields('t');
$query->addExpression('YEAR(t.date) = YEAR(CURDATE())');
$result = $query->execute()->fetchAll();

var_dump($result);