2010-11-02 16 views
8

Làm thế nào để viết SQL tương tự truy vấn trong drupal,làm thế nào để sử dụng như truy vấn trong drupal

SELECT title FROM { node } WHERE type='%s' 

tôi muốn thêm điều kiện như ở chỗ

SELECT title FROM { node } WHERE type='%s' AND LIKE '%S%' 

tôi nghĩ rằng tôi writtern sai như formnat truy vấn , có thể viết lại và cho tôi biết,

Trả lời

12

Chỉ cần sử dụng% để trốn thoát.

$result = db_query('SELECT title FROM {node} WHERE type = "%s" AND title LIKE "%%%s%%"', 'type', 'title'); 

while ($row = db_fetch_object($result)) { 
    // do stuff with the data 
} 

Loại nút không cần thoát.

3

OK, vì vậy, bạn muốn nhà điều hành LIKE tham chiếu cột title. Sử dụng truy vấn này:

$sql = "SELECT title FROM node WHERE type='%s' AND title LIKE '%S%'"; 
$type = "type to use in query"; 
$title = "title to use in query";  
$result = db_result(db_query($sql, $type, $title)); 

Điều này là do nhà điều hành LIKE yêu cầu phải chỉ định tên cột. Nếu không, cơ sở dữ liệu của bạn không có bất kỳ ý tưởng giá trị nào bạn muốn thực hiện so sánh. Xem here.

+0

Tôi muốn nhà điều hành cho trường tiêu đề – Bharanikumar

+0

am yêu cầu drupal – Bharanikumar

+0

Điều này là đúng, nhưng bạn phải thêm biến để thay thế cho các trình giữ chỗ đó. Vì vậy, $ sql = db_query ("nút TÌM KIẾM SELECT WHERE type = '% s' VÀ tựa đề LIKE '% S%'", $ type, $ title); $ result = db_result ($ sql); nơi $ loại và $ title bằng với những thứ bạn đang lọc. Bạn có thể đã biết điều này; Tôi chỉ muốn nói rõ ràng. – theunraveler

4

drupal_query thay thế %% đến% và% s đến chuỗi giá trị

do đó, mã của bạn sẽ được

$sql = "SELECT title FROM node WHERE type='%%%s' AND title LIKE '%%%S%%'"; 
$type = "type to use in query"; 
$title = "title to use in query";  
$result = db_result(db_query($sql, $type, $title)); 
3

Và đây là một ví dụ với cách sử dụng như thế nào trong một truy vấn động (Drupal 7 Chỉ):

$query = db_select('node', 'n') 
     ->fields('n', array('title')) 
     ->condition('type', 'my_type') 
     ->condition('title', '%' . db_like(search_string) . '%', 'LIKE'); 
    $result = $query->execute()->fetchCol(); 

db_like() được sử dụng để thoát khỏi nhân vật mà làm việc nhân vật như ký tự đại diện trong một mô hình tương tự.

+0

Điều này là sai, câu hỏi đã được hỏi về Drupal 6. Bạn cung cấp câu trả lời của Drupal 7 – generalconsensus

+0

Điểm tốt - Tôi đã chỉnh sửa câu trả lời của mình để làm rõ rằng điều này chỉ hoạt động trên Drupal 7. Vẫn có thể hữu ích cho ai đó ... –

+0

Đó là cảm ơn rất nhiều! – generalconsensus

Các vấn đề liên quan