2016-03-01 57 views
-1

有人可以帮我使用该代码,任何方向欢迎 我希望每个通过会话的用户创建表(每个用户创建自己的表 - 他人不能看到它)。用户存储自己的数据。 Mysql表名取自会话变量

<?php 
session_start(); 
if($_SESSION['user']==''){ 
header("Location:login.php"); 
}else{ 
$dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something'); 
$sql=$dbh->prepare("SELECT * FROM users WHERE id=?"); 
$sql->execute(array($_SESSION['user'])); 
while($r=$sql->fetch()){ 
    $sql = "CREATE TABLE .'$r['username'].'" (
    id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
    firstname VARCHAR(30) NOT NULL, 
    lastname VARCHAR(30) NOT NULL, 
    email VARCHAR(50), 
    reg_date TIMESTAMP 
    )"; 
    $conn->exec($sql); 
    echo " created successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo $sql . "<br>" . $e->getMessage(); 
    } 

$conn = null; 
} 
} 
?> 
+1

在你的代码,如果** **这是你的真实* *代码。 –

回答

0

您可以尝试修复你的PHP代码,并得到这样的:你有一个语法错误

<?php 
session_start(); 
if($_SESSION['user']==''){ 
    header("Location:login.php"); 
}else{ 
    $dbh=new PDO('mysql:dbname=something;host=127.0.0.1', 'something', 'something'); 
    $sql=$dbh->prepare("SELECT * FROM users WHERE id=?"); 
    $sql->execute(array($_SESSION['user'])); 
    while($r=$sql->fetch()){ 
     $sql = "CREATE TABLE `".$r['username']."` (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      lastname VARCHAR(30) NOT NULL, 
      email VARCHAR(50), 
      reg_date TIMESTAMP 
     )"; 
     try { 
      $dbh->exec($sql); 
      echo " created successfully"; 
     } catch(PDOException $e) { 
      echo $sql . "<br>" . $e->getMessage(); 
     } 
    } 

    $conn = null; 
} 
?> 
+0

我试过了代码,但仍然无法插入到mysql中。任何可能性? – OverHeat

+0

我修复答案。尝试将$ conn-> exec($ sql)替换为$ dbh-> exec($ sql)。因为你的pdo对象是$ dbh而不是$ conn。 –

0

在查询字符串中有一些错误。你应该删除一个双引号,并且表名应该用'而不是'来包装。所以,你的代码应该是这样的:

 $sql = "CREATE TABLE `{$r['username']}` (
      id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
      firstname VARCHAR(30) NOT NULL, 
      lastname VARCHAR(30) NOT NULL, 
      email VARCHAR(50), 
      reg_date TIMESTAMP 
     )"; 

而且,即使它不是一个真正相关的话题,你应该问自己,如果每个用户创建一个表是最好的解决方案。

+0

这是据我所知:/任何方向将是greatful.links或一些例子.... 感谢 – OverHeat

+0

为什么你们每个用户创建一个表?为了“别人看不见”? 如果是的,你可以看看有: http://stackoverflow.com/questions/17075424/get-the-data-of-specific-user-in-php http://stackoverflow.com/questions/34125900/filtering-mysql-data-in-php-to-only-show-data-of-the-current-sessions-user 该代码是否适用于修复? – olibiaz

+0

谢谢 没有代码仍然不工作。我没有在dreanweaver中得到任何语法错误。在Msql中没有插入任何东西。 – OverHeat