tra-loi-cau-hoi-phat-trien-web.com

Làm thế nào tôi có thể in ra một truy vấn Joomla?

Giả sử bạn đã xây dựng một truy vấn với Joomla.

// Get a db connection.
$db = JFactory::getDbo();

// Create a new query object.
$query = $db->getQuery(true);

// Select all records from the user profile table where key begins with "custom.".
// Order it by the ordering field.
$query->select($db->quoteName(array('user_id', 'profile_key', 'profile_value', 'ordering')));
$query->from($db->quoteName('#__user_profiles'));
$query->where($db->quoteName('profile_key') . ' LIKE '. $db->quote('\'custom.%\''));
$query->order('ordering ASC');

// Reset the query using our newly populated query object.
$db->setQuery($query);

// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$results = $db->loadObjectList();

Ví dụ từ đây: https://docs.j Joomla.org/Selecting_data_USE_JDatabase

Có một lệnh để in ra câu lệnh truy vấn (không phải là kết quả mà là SQL thực tế)?

13
Mat Kay

bạn cần lặp lại __toString ()

echo($query->__toString());

bạn có thể xem thêm thông tin ở đây

https://docs.j Joomla.org/API16:JDatabaseQuery/_toString

Hy vọng nó giúp

17
Piero Marsilio

Bạn cũng có thể sử dụng hàm replacePrefix của Joomla để loại bỏ truy vấn theo định dạng có thể được chèn thẳng vào như PhpMyAdmin.

Đây là một ví dụ:

$db = JFactory::getDbo();

$query = $db->getQuery(true);
$query->select($db->quoteName('something'))
      ->from($db->quoteName('#__content')); 
$db->setQuery($query);

// Dump the query
echo $db->replacePrefix((string) $query);

Sẽ xuất ra như sau:

SELECT `something` FROM `jos_content`
9
Lodder

Bạn cũng có thể sử dụng phương thức dump(): echo $query->dump();

5
Dmitry Rekun

Đối tượng JDatabaseQuery có hàm __toString() xuất ra truy vấn để bạn có thể thực hiện:

echo $db->getQuery();

Hoặc nếu bạn muốn truyền nó cho một hàm, trước tiên bạn có thể chuyển nó thành một chuỗi:

var_dump((string)$db->getQuery());
4
Joomler

Tính năng gỡ lỗi Joomla sẽ cung cấp cho bạn nhiều thông tin về các truy vấn được thực hiện khi trang web của bạn tải.

0
Klaus Veliu
echo $query;

sẽ làm tốt.

điều này làm cho việc sử dụng mã này

echo($query->__toString());
0
COBIZ webdevelopment