我正在尝试创建一个动态表单生成器。因此,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'];
是调用整数文本的部分。
有没有人有想法?
答案 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)
使用以列名字母开头的前缀。