繁体   English   中英

用PHP变量创建mysql表

[英]Creating a mysql table with a PHP variable

我在用PHP变量创建SQL表时遇到麻烦。

假设$ tbl_date =“ data”;

mysql_query('CREATE TABLE '.$tbl_date.'
(
Test varchar(15),
Yes varchar(15),
Very int
)');

它不会创建表。

您的表名不在引号中,因此似乎无法正常工作。 尝试这个:

mysql_query('CREATE TABLE `'.$tbl_date.'`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)');

字段名称也是如此。
也可以尝试一下,这样人类更容易阅读:

mysql_query("CREATE TABLE `{$tbl_date}`
(
`Test` varchar(15),
`Yes` varchar(15),
`Very` int
)");

请注意不同类型的报价:
-单引号和双引号用于在PHP中构建某些字符串(例如SQL查询)
-反引号特别用作表名称和列名称的SQL查询的一部分

我认为您缺少格式设置(单引号或双引号等),请尝试此操作

$sql = "CREATE TABLE `user` (`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `address` TEXT NOT NULL) ENGINE = MyISAM;";

这是我的工作范围:

$cars = "CREATE TABLE $tbl_date (
Test varchar(15), 
Yes varchar(15), 
Very int
)";
$results = mysql_query($cars) or die (mysql_error());

是的,但是您必须小心用户不要注入代码。 查看mySQL注入以确保您的代码安全,否则用户可以创建或删除您不希望其访问的表。 另外,我不明白您为什么要这么做,当然最好在数据库中创建一个表,然后添加带有行的字段,然后再添加行。

是的你可以。

mysql_query使用字符串,因此您基本上可以附加任何动态字符串。

如建议的那样,您需要在表名之前和之后使用反引号(并检查连接的用户是否有权创建表)。

这种用法的主要问题是,您很容易受到SQL注入的攻击(只要您不逃避$tbl_date ),所以我建议您向使用的变量添加更多的控件。

另外,将动态表添加到数据库(不包括noSQL数据库)通常是一种错误的用法(请检查您是否真的需要这样做)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM