当我使用列的整数名称时,CREATE TABLE失败

时间:2011-11-25 13:47:28

标签: php mysql

我正在尝试创建一个动态表单生成器。因此,PHP从数据库中获取一组名称,并创建一个新表,并将这些名称作为列名。这很有效,直到一个或多个名称为整数(例如'12345')。然后脚本失败了。

如何强制MySQL的PHP​​提供数字表名?

这是一段代码(它仍然是草稿):

$slaop = 'id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id)';
require_once 'dbconnect.php';
$connector = new DbConnector();
$result = $connector->query( 'SELECT * FROM '.$form.' ORDER BY rang' );
while ($opslaan = $connector->fetchArray($result)){
  $slaop .=  ', ';
  $slaop .= $opslaan['tekstid'];
  $slaop .=  ' TEXT';
}
echo $slaop;
// OPSLAAN
$formnaam = $_GET['welkform'];
require_once 'dbconnectsave.php';
$connector = new DbConnectorSave();
$connector->query('CREATE TABLE '.$formnaam.'('.$slaop.')')
  or die(mysql_error());

$opslaan['tekstid'];是调用整数文本的部分。

有没有人有想法?

4 个答案:

答案 0 :(得分:5)

为什么不在所有表格前加上表格名称?整数并不重要......

答案 1 :(得分:2)

正如其他人所说,这可能不是一个好主意。

但是,如果列名在反引号中包围,你仍然可以这样做。以下是一些MySQL示例:

create table abc (id int, 123 int);  -- fails

create table abc (id int, `123` int); -- succeeds

答案 2 :(得分:1)

  

如何强制使用mysql的php来提供数字表名?

您可以强制您的申请不使用此类字段名称吗?

并且也改变整个设计,不使用动态创建的表,并使用更常用的方法在一些表中存储表结构?

答案 3 :(得分:0)

使用以列名字母开头的前缀。