Ben bir sorguda kullanıyorum tabloları almak için herhangi bir yolu var mı?
Ben kullanıyordum ilk yöntem düzenli ifadeler oldu:
// result[1] = "SELECT"
// result[3] = "All between FROM and WHERE, ex: `users`, ex: `users`, `test`
if($result[1] == "SELECT" && !preg_match('/FROM\s*(.*?,.*?)\s*WHERE/i', $query, $res))
{
$tables = preg_replace('/`|\'|\s/i', '', $result[3]); // strip ` or ' or spaces
$tables = explode(",", $tables);
sort($tables);
}
Ama karmaşık mysql sorguları, bu yüzden kullanılan sonraki yöntem:
EXPLAIN SELECT...
ve sonuç diziden tabloları olsun.
Sorun sayımları ile geliyor, ben biliyorum ki içinde MyISAM DB'ın the number of rows is stored, bir sonraki sorgu yapmak eğer öyleyse:
SELECT COUNT(*) FROM users
Sen sorguda kullanılan tablo alamadım, herhangi bir tablo kullanılır çünkü "uzak optimize Seçin tabloları" olsun.
Yani, there is another method to get tables used in a query? Teşekkürler