У меня есть следующий код, который до сих пор содержит 2 запроса, основанных на термине $ _GET, переданном на страницу.
Запрос 1) извлекает имена столбцов на основе имени таблицы, переданного из $ _GET -> Works.
Запрос 2) Извлекает данные из этой таблицы -> Не работает.
Второй запрос:
$table_data = db_adminQuery('SELECT * FROM :tbl_name', array(':tbl_name' => $p ));
Когда я меняю запрос на:
$table_data = db_adminQuery('SELECT * FROM events', array());
он работает, но я не могу понять, почему это не на первом месте. Если я пропустил что-то или есть какая-то глупая ошибка, пожалуйста, дайте мне знать, потому что я не знаю, что с этим случилось.
Вот полный источник:
if(isset($_GET['page'])) { $pages = array('events','news','ads','slider'); $page = trim($_GET['page']); if(in_array($page, $pages)) { include 'db.php'; administer($page); } } function administer($p) { /* * * TABLE COLUMN NAMES & TYPES * */ $columns_tmp = db_adminQuery('SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = \'evented\' AND TABLE_Name = :table_name', array(':table_name' => $p)); if(!empty($columns_tmp)) { $columns = array(); foreach ($columns_tmp as $key => $value) { array_push($columns, array('name' => $value['COLUMN_NAME'], 'type' => $value['DATA_TYPE'])); } } /* * * TABLE DATA * */ $table_data = db_adminQuery('SELECT * FROM :tbl_name', array(':tbl_name' => $p )); print_r($table_data); $table = '<table cellpadding="0" cellspacing ="0">'.PHP_EOL; $table .= '<tr>'.PHP_EOL; foreach ($columns as $key => $value) { $table .= '<th style="padding:5px;">'.$value['name'].'</th>'; } $table .= '</tr>'.PHP_EOL; foreach ($table_data as $data_key => $data_value) { $table .= '<tr>'.PHP_EOL; //$table .= '<td>'.$data_value.'</td>'; $table .= '</tr>'.PHP_EOL; } $table .= '</table>'; echo $table; } function db_adminQuery($query, $params = array(), $return = true) { global $db; if($stmt = $db->prepare($query)) { // PARAMETERS if(!empty($params)) { foreach($params as $key => $value) { $stmt->bindParam($key, $value); echo $key.' - '.$value.'<br>'; } } $stmt->execute(); if($return == true) { $result = $stmt->fetchAll(PDO::FETCH_ASSOC); return $result; } } return false; }