我想知道是否有人可以提供帮助?
我是PHP的新手,已经开始创建一个基于会员的网站作为尝试学习一些新PHP的项目,我想知道自动创建表的正确语法是什么?
这是我当前的代码,我希望为每个用户创建一个单独的表,但是在尝试和尝试时我似乎无法让它工作!
有任何建议/更正吗?
<?php
require("dbconnection.php");
if(empty($_SESSION['username'])) {
header("Location: index.php");
die("Redirecting to index.php");
}
$user = $_SESSION['username'];
$sql = "CREATE TABLE $user (id int(5) NOT NULL)";
$result = mysql_query($sql);
if(!$result) {
echo "FAILED";
}
echo "CREATED";
?>
dbconnection.php文件正常工作,因为我的所有其他页面都调用它来执行其他任务。
答案 0 :(得分:2)
不要那样做!
为什么不在一个包含所有用户的所有数据的表中插入新行?
$sql = "INSERT INTO users (username) VALUES ('".$sql."')";
答案 1 :(得分:1)
根据我的经验,为每个用户创建每个表是非常不值得推荐的,因为它在空间和资源方面非常昂贵。如果Facebook做同样的事情,他们的数据库将拥有11亿个表!而不是他们所有这些成员都有 1表。使用一个表,然后保留主键列,例如用于识别此人的ID。例如
$sql = "CREATE TABLE IF NOT EXISTS users (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
names VARCHAR(100),
email VARCHAR(100),
password VARCHAR(200)
)";
mysql_query($sql) or die(mysql_error());
然后当用户注册时,id列会自动递增,因此他/她将拥有一个唯一的ID,您可以使用它来跟踪他/她,就像这样;
$res = mysql_query("SELECT * FROM users WHERE id ='".$id."'") or die(mysql_error());
$data = mysql_fetch_assoc($res);
echo $data['names']." ".$data['email']; /* names, email, password ... etc */
这要好得多。而不是创建100万个表,您可以为所有100万人提供1个表。
问候!