如何用php变量创建表名

时间:2013-08-16 05:24:31

标签: php mysql

我需要根据每个用户的ID创建一个表,它存储在$ id中。因此每个用户都有自己的日历。

  

对于用户#23,创建的日历将是表“calendar23”,

所以我正在使用:

$id = 23;

CREATE TABLE calendar$id (.......

但它不起作用,我做错了什么?

提前致谢

Gucho

2 个答案:

答案 0 :(得分:1)

如果该策略确实是正确的方法,请再想一想。它忽略了关系数据库管理系统的好处。而是为所有用户使用单个表,并标记每个用户ID的条目。这样您的sql语句就变得更加容易和安全。

如果你真的想坚持你的方法,那么你必须准备声明:

$sql_stmt = sprintf('CREATE TABLE calendar%s (.......)', $id);

但是这仍然是非常不安全的,因为它对sql注入攻击很开放。阅读准备好的语句并使用mysqli或PDO扩展。

答案 1 :(得分:0)

你可能会遗漏任何小事。试试这个。

$id = "table23";
// Create table
$sql="CREATE TABLE Persons".$id."(FirstName CHAR(30),LastName CHAR(30),Age INT)";

// Execute query
if (mysqli_query($con,$sql))
  {
  echo "Table persons created successfully";
  }
else
  {
  echo "Error creating table: " . mysqli_error($con);
  }