2015-09-04 3 views
-2

Я пытаюсь получить запрос php mysql для динамического преобразования результата по полю.mysql php динамическая группа по sql-запросу

По некоторым причинам он не работает здесь, это код, который я использую.

<?php 
    $servername = "localhost"; 
    $username = "user"; 
    $password = "pass"; 

    try { 
     $objDatabase = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); 
     $objDatabase->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     echo "Connected successfully"; 
     } 
    catch(PDOException $e) 
     { 
     echo "Connection failed: " . $e->getMessage(); 
     } 
?> 

<?php 

//Process the GET data received from the previous page. 
$custo = $_GET["Customer"]; 
$startdate = $_GET["fromdate"]; 
$enddate = $_GET["enddate"]; 
$stdate = date("Y-m-d", strtotime($startdate)); 
$endate = date("Y-m-d", strtotime($enddate)); 


$basequery = "SELECT cust, manu, model, serial, capacity, firmware, method, date, stime, etime, wks, result, COUNT(*) AS total FROM hdds WHERE cust = '".$custo."' and `date` >= '".$stdate."' and `date` <= '".$endate."'"; 

$retval = mysql_query($basequery, $conn); 
if(! $retval) 
{ 
    die('Could not get data: ' . mysql_error()); 
} 

?> 


    <?php 

$type="capacity"; 
$typeQuery = $basequery." GROUP BY ".$type; 
// Perform the Query 
$objDbResultByType = $objDatabase->Query($typeQuery); 
echo '<div id="1000" style="display: none;">'; 
echo "<h3>Quality Control Checked by<br></h3><strong>"; 
$capacity = array(); 
while ($row = $objDbResultByType()) { 
    echo $row['capacity']. " = " .$row['total']; 
    echo "<br><strong>"; 
$result = "{ label: \"".$row['capacity']."\", y: " .$row['total']." },"; 
array_push($capacity,$result); 
} 
//echo $result; 
$lastIndex = count($capacity)-1; 
$lastValue = $capacity[$lastIndex]; 
$testedby[$lastIndex] = rtrim($lastValue, ','); 

//Echo the capacity from array to the monitor screen. 
foreach ($capacity as $result){ 
echo $result, '<br>'; 
} 


    ?> 

Приведенный выше код дает мне пустой экран.

Однако, если я запустил этот запрос в mysql, он вернет данные, с запросом проблем нет.

mysql> SELECT cust, manu, model, serial, capacity, firmware, method, date, stime, etime, wks, result, COUNT(*) AS total from hdds where cust = 'Imran-ABC' and date >= '2015-08-01' and '2015-09-14' group by date; 
+-----------+------------------------------------------+------------+----------+-----------------------------+----------+--------+------------+----------+----------+------+-----------+-------+ 
| cust  | manu          | model  | serial | capacity     | firmware | method | date  | stime | etime | wks | result | total | 
+-----------+------------------------------------------+------------+----------+-----------------------------+----------+--------+------------+----------+----------+------+-----------+-------+ 
| ABC | Seagate Barracuda 7200.7 and 7200.7 Plus | ST340014AS | 5MQ3DJPM | 40000000000 bytes [40.0 GB] | 8.12  | zero | 2015-08-26 | 18:56:29 | 18:56:29 | 89 | Succeeded |  1 | 
| ABC | Seagate Barracuda 7200.7 and 7200.7 Plus | ST340014AS | 5MQ3DJPM | 40000000000 bytes [40.0 GB] | 8.12  | zero | 2015-09-01 | 18:56:29 | 18:56:29 | 89 | Succeeded | 27 | 
| ABC | Seagate Barracuda 7200.7 and 7200.7 Plus | ST340014AS | 5MQ3DJPM | 40000000000 bytes [40.0 GB] | 8.12  | zero | 2015-09-02 | 20:04:19 | 20:04:19 | 36 | Succeeded |  2 | 
+-----------+------------------------------------------+------------+----------+-----------------------------+----------+--------+------------+----------+----------+------+-----------+-------+ 
3 rows in set, 1 warning (0.00 sec) 

mysql> 

Может кто-нибудь, пожалуйста, помогите, что я делаю неправильно и почему это не работает?

Заранее благодарим за помощь.

+0

'

+0

Спасибо фиксированной user2107349

+1

Вы смешиваете (устаревшие) 'mysql_ *' вызовы с PDO. Кроме того, проверьте журналы, если вы получите пустой экран, ваше сообщение об ошибке будет там. –

ответ

0

Удалось устранить это, используя следующее.

<?php 

$type="capacity"; 
$typeQuery = $basequery." GROUP BY ".$type; 
// Perform the Query 
$objDbResultByType = $objDatabase->Query($typeQuery); 
foreach ($objDbResultByType as $row) { 
preg_match('/\[(.*?)\]/', $row['capacity'], $matches); 
if (isset($matches[1])) { 
    $row['capacity'] = $matches[1]; 
} 
    echo $row['capacity']. " = " .$row['total']; 
    echo "<br><strong>"; 
$result = "{ label: \"".$row['capacity']."\", y: " .$row['total']." },"; 
array_push($capacity,$result); 

} 

$lastIndex = count($capacity)-1; 
$lastValue = $capacity[$lastIndex]; 
$testedby[$lastIndex] = rtrim($lastValue, ','); 

//Echo the capacity from array to the monitor screen. 
foreach ($capacity as $result){ 
echo $result, '<br>'; 
} 

?> 
Смежные вопросы