Ответ 1
Можно ли связать имя таблицы?
Нет.
Вам нужно присваивать имена таблиц белого списка. Я сомневаюсь, что вы хотите, чтобы пользователь мог просматривать любую таблицу из вашей базы данных.
И вам также нужно отформатировать идентификаторы вручную. Существует пример тега wiki. Почему бы не прочитать его первым?
Update: Как вы можете видеть, PDO оказывается неудобным для реальных задач. Итак, для обработки запросов MySQL вы должны иметь более интеллектуальную библиотеку абстракции. Вот пример, используя класс safeMysql, который сделает ваш код значительно короче:
class form{
public function __construct($table){
global $db;
return $db->getAll("DESCRIBE ?n", $table);
}
}
2 примечания:
- Я удалил второй параметр, поскольку в вашей функции нет кода.
- НИКОГДА не подключайтесь к классу. Вместо этого используйте уже открытое соединение. Или вы убьете свой сервер MySQL с таким количеством подключений.
Исключить реализованную версию
class form {
public function __construct($table,$skip = array("id")){
global $db;
$data = array();
$res = $db->query("DESCRIBE ?n", $table);
while($row = $db->fetch($res)) {
if (!in_array($row['Field'],$skip)) {
$data[] = $row;
}
}
return $data;
}
}
Однако такой класс редко может использоваться по назначению - всегда есть много исключений и ручного форматирования, чтобы сделать его пригодным для использования.